iOS 自动更新订阅 veirfyReceipt returns 与设备不同的 base64 收据

iOS Auto Renewable Subscriptions veirfyReceipt returns different receipts base64 than device

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

在每次状态轮询时,我想更新 last_receipt_base64expired_date 字段,所以我采用 last_receipt_base64 并将其发送到苹果的 /verifyReceipt 路由。但是每次它都会在 'latest_receipt' 键下放置不同的收据(base64)。更重要的是,返回的(从 /verifyReceipt)以 64 为基数的收据的长度比从设备发送的收据(从设备接收 35,000 个字符,从 /verifyReceipt 返回 6000 个字符的收据)短得多。这是为什么?

如果有变化但数据一直在变化,我想在每个状态柱上更新我的数据库中的条目!此外,设备收据和 /verifyReceipt 之间的极端长度差异让我担心有一天收据可能会被拒绝,如果用户长时间不登录 iOS 应用程序。 不管怎样,我有点困惑,文档也不是很好……一些指导方针会有帮助。

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

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

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

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

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

如果您需要帮助,请告诉我们。谢谢!