在App Purchase中,其状态不会更改为SKPaymentTransactionStatePurchased

时间:2011-08-11 13:23:08

标签: ios in-app-purchase

我已将应用购买功能添加到我的iphone-ipad应用程序中,它现在正在app store中运行。我正在更新此应用并使用以下方法获取交易状态通知

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        NSLog(@"Payment Queue");
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                NSLog(@"Payment not finished");
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
                break;
            case SKPaymentTransactionStatePurchasing:
                NSLog(@"Trying To Purchase");
                break;
            default:
                NSLog(@"Buraya giriyor");
                break;
    }
}

}

但问题是当我尝试连接到沙盒服务器时,我得到了事务失败状态。应用程序商店中的工作一切都是一样的。我刚刚在应用中更新了一些视图。在商店中使用该应用程序时,它询问AppleID并要求确认下载内容。当我在应用程序购买测试时,它也要求这个AppleID和确认。但现在,虽然它找到并获得了产品标识符,但它不会要求这些确认。



1月9日星期五04:14:19 iPod-touch CCDergi [1740]:indirilenappkey = 201107

两条线之间的日志信息属于我想要购买的产品。


1月9日星期五04:14:21 iPod-touch CCDergi [1740]:------------------------------- ---------------

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:产品名称:Call Center Life Issue 8

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:产品描述:呼叫中心生活杂志第8期

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:产品价格:2.99

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:产品编号:com.selvitech.cclife.201107

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:------------------------------- ---------------

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:购买Dergi

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:付款队列

1月9日星期五04:14:21 iPod-touch CCDergi [1740]:试图购买

1月9日星期五04:14:25 iPod-touch CCDergi [1740]:付款队列

1月9日星期五04:14:25 iPod-touch CCDergi [1740]:付款未完成



可能是什么问题?我错过了什么?

提前谢谢..

1 个答案:

答案 0 :(得分:1)

**(取消......这对我来说没有用,虽然它可能对其他人有帮助)

我注意到iOS9上没有transactionReceipt方法。它返回nil值而不是收据数据。因此,使用此方法的某些应用无法购买。自iOS7起,此方法已弃用。最后它变得不起作用。

    NSData receipt = [transaction transactionReceipt]; //always return nil on ios9  

您应该使用[NSBundle appStoreReceiptURL]来获取收据数据。

    NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];  
    NSData* receipt = [NSData dataWithContentsOfURL:url]; //works fine. 

一旦我尝试将其集成到我的App中进行测试,我会更新。