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

When does app receipt get new transaction?

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

直到今天,我发现新的交易总是在我从苹果取回的解密应用程序收据的"in_app"字段中。今天我正在测试订阅(据我所知这是有效的)但注意到当我订购非订阅、非消耗品时,它的交易是 not present在应用程序收据的 "in_app" 数组中,直到我订购 另一个 非订阅、非消耗品。那时我在 "in_app" 数组中看到了之前订购的产品,但没有看到新订购的产品。

之前购买的和新购买的物品都出现在 "latest_receipt_info" 数组中。我只想使用那个数组而不是 "in_app",但是直到我开始测试订阅我才开始看到 "latest_receipt_info",所以我认为它并不总是存在。

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

我认为您没有遗漏任何一步。我确实认为消耗品购买没有立即显示在磁盘收据上很奇怪,但这可能是正常行为,我不确定。

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

另一种选择是在服务器端使用 latest_receipt_info 作为您的真实来源。仅当您在请求 JSON 的 password 字段中发送 iTunes Connect App-Specific Share Secret 时,该字段才会出现。

就我个人而言,我会使用 latest_receipt_info