首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在应用购买中不会将其状态更改为SKPaymentTransactionStatePurchased

在应用购买中不会将其状态更改为SKPaymentTransactionStatePurchased
EN

Stack Overflow用户
提问于 2011-08-11 21:23:08
回答 1查看 1.3K关注 0票数 2

我已经在我的iphone-ipad应用程序中添加了应用程序购买功能,它现在正在应用程序商店中工作。我正在更新此应用程序,并使用下面的方法获取事务状态通知

代码语言:javascript
复制
- (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和确认。但是现在,尽管它找到并获得了产品标识符,但它并不要求这些确认。

Fri Jan 9 04:14:19 iPod-touch CCDergi1740 : indirilenappkey = 201107

两行之间的日志信息属于我试图购买的产品。

Fri 9 04:14:21 iPod-touch CCDergi1740:

Fri Jan 9 04:14:21 iPod-touch CCDergi1740 :产品名称:呼叫中心生活第8期

Fri Jan 9 04:14:21 iPod-touch CCDergi1740 :产品说明:呼叫中心生活杂志第8期

Fri 9 04:14:21 iPod-touch CCDergi1740 :产品售价: 2.99

Fri Jan 9 04:14:21 iPod-touch CCDergi1740 :产品id: com.selvitech.cclife.201107

Fri 9 04:14:21 iPod-touch CCDergi1740:

Fri Jan 9 04:14:21 iPod-touch CCDergi1740 :购买Dergi

Fri Jan 9 04:14:21 iPod-touch CCDergi1740 :付款队列

Fri Jan 9 04:14:21 iPod-touch CCDergi1740 :正在尝试购买

Fri Jan 9 04:14:25 iPod-touch CCDergi1740 :付款队列

Fri Jan 9 04:14:25 iPod-touch CCDergi1740 :付款未完成

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

提前谢谢你..

EN

回答 1

Stack Overflow用户

发布于 2015-09-14 07:11:43

**(取消..这对我不起作用,尽管它对其他人可能仍然有帮助)

我注意到在iOS9上transactionReceipt方法不可用。它返回nil值而不是收据数据。因此,一些使用此方法的应用在购买时会失败。自iOS7以来,此方法已弃用。最后,它变得不工作了。

代码语言:javascript
复制
    NSData receipt = [transaction transactionReceipt]; //always return nil on ios9  

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

代码语言:javascript
复制
    NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];  
    NSData* receipt = [NSData dataWithContentsOfURL:url]; //works fine. 

我会更新一旦我尝试将此集成到我的应用程序进行测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7026630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档