iOS8应用程序内采购收据验证

iOS8应用程序内采购收据验证,ios,ios8,in-app-purchase,storekit,Ios,Ios8,In App Purchase,Storekit,我目前正在实施耗材的应用程序内购买。我已经启动并运行了代码,在本地执行购买和验证收据 这是我目前正在做的工作的伪代码: Make purchase request Respond to paymentQueue updatedTransactions callback If Transaction Success Validate app receipt fields locally (hash, bundle id, version) Validate

我目前正在实施耗材的应用程序内购买。我已经启动并运行了代码,在本地执行购买和验证收据

这是我目前正在做的工作的伪代码:

Make purchase request
Respond to paymentQueue updatedTransactions callback
    If Transaction Success
        Validate app receipt fields locally (hash, bundle id, version)
        Validate in app purchase fields (product, qty, transactionid)
        Check transaction has not been seen before
        If Validation passes
            Complete in app purchase and top up user
由于SKPaymentTransaction.transactionReceipt在iOS8中已被弃用,我正在使用应用程序收据进行验证。我假设当updateTransactions回调被触发时,它是最新的应用程序内消费品购买

在调用“paymentQueue updatedTransactions”之前,应用程序收据是否一直刷新?有没有可能它不会在那里,或者它会过时


我希望随回复一起下载最新的收据数据。我的测试表明情况确实如此,但我在文档中找不到任何明确的说明。

总之,没有;应用程序收据可能完全丢失,或者可能已过时,无法反映最新交易

我相信这就是为什么苹果说你应该刷新应用程序收据的原因“失败”有一个宽泛的定义;它可以是上述任何验证步骤

要了解情况是否如此,请尝试以下在iOS 8.0上测试的测试脚本

  • 启动采购,接受“确认采购”模式对话框
  • 在通知应用程序的交易观察者购买之前,请关闭应用程序并将其从设备中删除。此时仍应显示“感谢您的购买”对话框
  • 重新安装你的应用程序。添加事务观察者时,storekit将通知它已完成的事务
  • 如果您的应用程序尝试读取应用程序回执,它将发现该回执丢失