我目前正在应用消费品购买。我已启动并运行代码,执行购买并在本地验证收据。
这是我目前正在做的伪代码:
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”之前,应用收据是否全部刷新?它有可能不存在或者它会陈旧吗?
我希望随回复下载最新的收据数据。我的测试表明情况确实如此,但我在文档中找不到任何明确说明的内容。
答案 0 :(得分:0)
总之,没有;应用程序收据可能完全丢失或可能过时,并不反映最新的交易。
我相信这就是为什么Apple声明您应该刷新应用收据if validation fails on iOS的原因。 '失败'有一个广泛的定义;它可以是前面提到的任何验证步骤。
要查看是这种情况,请尝试在iOS 8.0上测试以下测试脚本。