当前位置:  开发笔记 > 运维 > 正文

如何使用单个appStoreReceiptURL来验证多个StoreKit事务?

如何解决《如何使用单个appStoreReceiptURL来验证多个StoreKit事务?》经验,为你挑选了1个好方法。

我们正在使用服务器端验证来验证我们的应用内购买iTunes.当交易发送到SKPaymentTransactionObserver时,我们从appStoreReceiptURL获取收据以验证它.

if let receiptPath = NSBundle.mainBundle().appStoreReceiptURL?.path where
    NSFileManager.defaultManager().fileExistsAtPath(receiptPath),
    let receiptData = NSData(contentsOfURL:NSBundle.mainBundle().appStoreReceiptURL!) {
    return receiptData
}

但在某些情况下,例如当我们恢复购买时,会收到多个交易方法:

public func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])

使用相同的收据数据来验证每笔交易似乎很奇怪.单个收据是否包含有关每笔交易的数据?



1> Marc Greenst..:

单个收据是否包含有关每笔交易的数据?

是.从中访问的收据appStoreReceiptURL是针对用户和应用程序的所有可持久事务的单个收据.

应用内购买收据的文档

在进行购买时,将消费品的应用内购买收据添加到收据中.它会保留在收据中,直到您的应用完成该交易.在此之后,下次更新收据时会将其从收据中删除 - 例如,当用户再次购买时,或者您的应用明确刷新收据时.

非消费品,自动续订,非续订或免费订阅的应用内购买收据将无限期保留在收据中.

即所有应用内购买,包括订阅续订和恢复购买以及不包括消费购买,都会创建新的交易并存储在收据中.

使用订阅的文档:

成功续订订阅后,Store Kit会将续订事务添加到事务队列中.您的应用程序在启动时检查事务队列,并以与任何其他事务相同的方式处理续订.

恢复购买产品的文件:

恢复已完成的事务会为用户创建的每个已完成事务创建新事务.

请注意,恢复的购买和订阅续订的原始交易ID将相同.

收据本质上是存储在设备上的文件,当添加新事务时应用程序会更新该文件.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有