iOS8 In App购买收据验证

时间:2015-03-03 15:14:11

标签: 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 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

由于在iOS8中已弃用SKPaymentTransaction.transactionReceipt,因此我使用应用收据进行验证。我假设当updateTransactions回调被触发时,它与应用程序购买中的最新消费品是最新的。

在调用“paymentQueue updatedTransactions”之前,应用收据是否全部刷新?它有可能不存在或者它会陈旧吗?

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

1 个答案:

答案 0 :(得分:0)

总之,没有;应用程序收据可能完全丢失或可能过时,并不反映最新的交易。

我相信这就是为什么Apple声明您应该刷新应用收据if validation fails on iOS的原因。 '失败'有一个广泛的定义;它可以是前面提到的任何验证步骤。

要查看是这种情况,请尝试在iOS 8.0上测试以下测试脚本。

  1. 开始购买,接受“确认购买”模式对话框。
  2. 在您的应用程序的交易观察员被告知购买之前,请终止您的应用并将其从设备中删除。 “谢谢您的购买”对话框仍应显示。
  3. 重新安装您的应用。当您添加事务观察器时,storekit将通知它已完成的事务。
  4. 如果您的应用尝试阅读应用收据,则会发现它已丢失。