我正在尝试实现自动可再生订阅。我的应用程序可以在不同的设备(Android,Web)上使用,因此我需要实现状态轮询技术,以便在App Store管理续订的订阅时确认我的服务器。
收据正在我的服务器上验证为详细的here
在设备上进行的每笔交易中,我都会在收据验证过程中为last_receipt_base64字段更新数据库中用户的条目。

在每个状态轮询中,我想更新last_receipt_base64expired_date字段,因此我选择了last_receipt_base64并将其发送到苹果的/verifyReceipt路由。但是每次它将不同的收据(base64)放在'latest_receipt'键下。更甚者,返回的(从/verifyReceipt的)收据库64的长度奇怪地比从设备发送的收据(从设备的35,000字符的收据,从/verifyReceipt返回的6000字符的收据)短得多。这是为什么?

如果发生变化,我想更新每个状态极点上数据库中的条目,但是数据不断变化!另外,来自设备的收据和/verifyReceipt的收据之间的极端长度差异也使我担心,如果用户长时间不登录iOS应用,收据可能有一天会被拒绝。
无论如何,我有点困惑,文档也不是很好。...一些指导会有所帮助。

最佳答案

加尔·沙哈尔!
我们还使用Apple服务器通知在我们的订阅管理平台中更新订阅状态。

状态轮询通知中的接收不是您要查找的。您应该存储直接从设备发送的收据。

您应该仅依靠original_transaction_id并通过此ID查找您的客户。

顺便说一句,您无需更新base64收据,因为它将始终为您提供最新的交易记录。

我建议您阅读我们博客中的这篇文章:https://blog.apphud.com/subscriptions-notifications/

让我们知道,如果您需要帮助。谢谢!

关于ios - iOS自动续订订阅veirfyReceipt返回与设备不同的base64收据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58436121/

10-13 09:26