应用收据何时获得新的交易?

时间:2017-12-06 21:02:21

标签: ios in-app-purchase receipt-validation

我有一个应用程序,通过查看到我们的事务队列观察器的事务中包含的transactionReceipt,一直在使用现已弃用的iOS 7之前的方法来实现IAP。那工作得很好。观察者的新实现只跟踪是否正在报告任何新事务(状态为SKPaymentTransactionStatePurchased),如果在队列中找到任何新事务,它会抓取应用程序收据(不是transactionReceipt)并将其发送到服务器。

直到今天,我发现新的交易始终位于我从Apple返回的解密应用收据的“in_app”字段中。今天我正在测试订阅(这是我可以告诉的)但注意到当我订购一个非订阅的非消费产品时,它的交易存在于“应用程序收据中的in_app“数组,直到我订购另一个非订阅,非消费品。那时我看到先前在“in_app”数组中订购的产品,但不是新订购的产品。

两者先前购买的和新购买的商品都存在于“latest_receipt_info”数组中。我只是使用那个数组而不是“in_app”,但在我开始测试订阅之前我还没有开始看到“latest_receipt_info”,所以我认为它不会一直存在。

问题:我错过了一步吗?在使用之前,我应该在事务队列观察器中刷新我的应用收据吗?如果我这样做,它不会提示用户提供他们的Apple ID凭证莫名其妙(他们只是下了订单并输入了他们的凭据;我不希望他们再次这样做)?

1 个答案:

答案 0 :(得分:0)

我认为你错过了一步。我认为消费品购买没有立即显示在磁盘收据上,这很奇怪,但这可能是正常行为,我不确定。

您始终可以触发收据刷新。如果用户刚刚购买了非消耗品,并且完成了购买流程,则他们不应该看到另一个登录弹出窗口。

另一种方法是使用服务器端的latest_receipt_info作为事实来源。仅当您在请求JSON的password字段中发送iTunes Connect App特定共享密钥时,才会显示此字段。

就个人而言,我会使用latest_receipt_info

相关问题