【问题标题】:In app purchase live url show sandbox popup and allow subscription for sandbox user在应用程序购买实时 url 显示沙盒弹出窗口并允许沙盒用户订阅
【发布时间】:2018-06-29 13:21:03
【问题描述】:

我在我的应用程序中添加了应用内购买,它在沙盒环境中运行良好,但是当我将它的 URL 从沙盒更改为实时运行并运行应用程序时,它的行为异常。

这是我的代码:

以下是我们要求苹果获取用户应用购买详情的方法。

-(BOOL) getSubscriptionStatusFromAppleWithReceipt:(NSData *) receiptData

{

NSError *error;
NSMutableDictionary *requestContents = [NSMutableDictionary dictionaryWithObject:
                                        [receiptData base64EncodedStringWithOptions:0] forKey:@"receipt-data"];
NSString *sharedSecret = @“*********************”;
if (sharedSecret) requestContents[@"password"] = sharedSecret;
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents options:0 error:&error];

NSString *strUrl = @"";


// Live server
strUrl = @"https://buy.itunes.apple.com/verifyReceipt";

// Devlopment server

// strUrl = @"https://sandbox.itunes.apple.com/verifyReceipt";

NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strUrl]];
[storeRequest setHTTPMethod:@"POST"];
[storeRequest setHTTPBody:requestData];

queue = [NSOperationQueue mainQueue];

//    NSError *error = nil; 
NSHTTPURLResponse *response = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:storeRequest returningResponse:&response error:&error];

if (!error)
{
    NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

    if ([jsonResponse[@"latest_receipt_info"] isKindOfClass:[NSArray class]])
    {
        NSArray *receiptInfo = (NSArray *) jsonResponse[@"latest_receipt_info"];
        return [self parseJsonFromAppleServer:receiptInfo];
    }
}
else
{        NSLog(@"%@", error.localizedDescription);
}

return false;   

}

接下来的方法是检索收据数组的最后一个索引,并尝试获取用户的订阅详细信息。

我应该在试飞时上传它还是以其他方式上传它以区分从实时到开发的差异? 如何在实际环境中进行测试。

谢谢

【问题讨论】:

    标签: ios objective-c testing in-app-purchase receipt-validation


    【解决方案1】:

    应用程序应使用生产配置文件进行代码编写,以便通过 Live 服务器运行 IAP。我认为您只能使用 test flight 对生产服务器进行测试,因为应用程序必须由 Apple 服务器签名。

    【讨论】:

    • "应用程序必须由 Apple 服务器签名。"意味着我们是否将其提交给 beta 应用审核,然后我们可以对其进行测试?
    • 如果您要使用内部测试人员帐户进行测试,则无需通过 beta 审核。
    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2017-11-26
    • 2013-06-30
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2014-02-25
    相关资源
    最近更新 更多