在告知“已购买商品”消息后,应用内购买失败

时间:2012-06-07 14:23:27

标签: ios ios5 in-app-purchase

我正在构建iOS应用并尝试实施应用内购买(非消费品)。

所有捆绑包ID等都已设置并正常工作,我可以在获取Apple Store服务器时看到我的产品有效。但是,在测试时,我在paymentQueue回调中收到失败的交易。

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

  1. 一个消息框询问“你想买0.99美元?”这是正确的
  2. 我点击是。
  3. 大约一秒后,它说我已经买了它(正确的,我在调试时最初测试它)。我点击OK。
  4. 它抱怨登录要求(它说像MZFinance_LoginRequired,我认为它是一个缺少的字符串标识符。)我点击确定。
  5. 弹出App Store登录框,然后输入我的测试帐户凭据。
  6. 我的Xcode中的断点被点击,事务状态 SKPaymentTransactionStateFailed
  7. 以下是我的代码的相关部分:

    -(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];
    
        }
    }
    

    } }

    [self purchaseFailed]总是被点击,只是通知用户。这可能有什么不对? (我是iOS新手,显然是iOS应用程序购买)。 感谢。

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

2 个答案:

答案 0 :(得分:1)

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

由于

答案 1 :(得分:0)

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