Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 告诉“应用程序内购买失败”;“已购买的物品”;消息_Ios_Ios5_In App Purchase - Fatal编程技术网

Ios 告诉“应用程序内购买失败”;“已购买的物品”;消息

Ios 告诉“应用程序内购买失败”;“已购买的物品”;消息,ios,ios5,in-app-purchase,Ios,Ios5,In App Purchase,我正在构建一个iOS应用程序,并尝试实施应用程序内购买(非耗材) 所有捆绑包ID等都已设置并工作,当我获取Apple Store服务器时,我可以看到我的产品是有效的。然而,在测试时,我在paymentQueue回调中得到失败的事务 以下是在iOS模拟器中逐步发生的情况: 一个消息框问“你想用0.99美元买……吗?”哪一个是正确的 我点击是 大约一秒钟后,它说我已经买了它(正确,我最初在调试时测试了它)。我点击OK 它抱怨登录要求(它说类似于MZFinance_LoginRequired,我认为它

我正在构建一个iOS应用程序,并尝试实施应用程序内购买(非耗材)

所有捆绑包ID等都已设置并工作,当我获取Apple Store服务器时,我可以看到我的产品是有效的。然而,在测试时,我在paymentQueue回调中得到失败的事务

以下是在iOS模拟器中逐步发生的情况:

  • 一个消息框问“你想用0.99美元买……吗?”哪一个是正确的
  • 我点击是
  • 大约一秒钟后,它说我已经买了它(正确,我最初在调试时测试了它)。我点击OK
  • 它抱怨登录要求(它说类似于MZFinance_LoginRequired,我认为它缺少字符串标识符)我单击OK
  • 应用商店登录框弹出,我输入我的测试帐户凭据
  • 我在Xcode中的断点被命中,事务状态为SKPaymentTransactionStateFailed
  • 以下是我的代码的相关部分:

    -(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
    NSArray* arr = response.products;
    for (int i = 0; i < arr.count; i++) {
        SKProduct* product = [arr objectAtIndex:i];
        if([product.productIdentifier isEqualToString:@"<<my in app purchase id which is correct and working>>"]){
            SKPayment *payment = [SKPayment paymentWithProduct:product];
            [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
            [[SKPaymentQueue defaultQueue] addPayment:payment];
        }
    }
    
    -(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
    for (SKPaymentTransaction* ta in transactions) {
        switch (ta.transactionState) {
            case SKPaymentTransactionStatePurchased:
            case SKPaymentTransactionStateRestored:
                receipt = [ta transactionReceipt];
                [self performSelectorInBackground:@selector(validateFromServer) withObject:nil];
                break;
            case SKPaymentTransactionStateFailed:
                [self purchaseFailed];
                break;
        }
    
        if(!ta.transactionState == SKPaymentTransactionStatePurchasing){
            [[SKPaymentQueue defaultQueue] finishTransaction:ta];
    
        }
    }
    
    -(void)productsRequest:(SKProductsRequest*)请求接收方响应:(SKProductsResponse*)响应{
    NSArray*arr=response.products;
    对于(int i=0;i
    } }

    [self purchaseFailed]
    总是被点击,这只是通知用户。这里有什么问题?(我是iOS新手,显然是iOS应用程序内购买)。 谢谢


    更新:我的测试帐户凭据是正确的,因为如果键入错误,我会收到一条不同的(无效登录)消息。

    经过一段时间的努力,我发现我在生产中没有遇到任何问题。这可能是沙盒服务器的问题。

    经过一段时间的努力,我发现我在生产中没有遇到任何问题。这可能是沙盒服务器的问题。

    很抱歉回答得太晚,我知道您已经解决了您的问题,但我也遇到了这个问题。我的解决方案是自动运行恢复购买方法,因为这似乎是可行的


    谢谢

    很抱歉回答晚了,我知道你已经解决了你的问题,但我也遇到了这个问题。我的解决方案是自动运行恢复购买方法,因为这似乎是可行的

    谢谢