我正在尝试实现自动续订订阅。我的应用程序可以在不同的设备(Android、Web)上使用,因此我需要实现状态轮询技术,以便在 App Store 设法续订过期订阅时确认我的服务器。
收据正在我的服务器上进行验证,详细说明here .
对于在设备上进行的每笔交易,我都会在收据验证过程中更新数据库中 last_receipt_base64
字段的用户条目。
在每次状态轮询中,我想更新 last_receipt_base64
和 expired_date
字段,因此我获取 last_receipt_base64
并将其发送到 Apple 的 /verifyReceipt
路线。但每次它都会在“latest_receipt”键下放置不同的收据(base64)。更重要的是,返回的(从 /verifyReceipt
)基于 64 的收据长度奇怪地比从设备发送的收据短得多(从设备发送的 35,000 个字符的收据,从 /返回的 6000 个字符的收据)验证收据
)。这是为什么?
如果有变化,我想更新每个状态杆上数据库中的条目,但数据不断变化!此外,设备收据和 /verifyReceipt
之间的极端长度差异让我担心,如果用户长时间不登录 iOS 应用程序,收据有一天可能会被拒绝。
不管怎样,我有点困惑,而且文档也不是很好......一些指南会很有帮助。
最佳答案
加沙哈尔! 我们还使用 Apple 服务器通知来更新订阅管理平台中的订阅状态。
状态轮询通知中的收据不是您要查找的收据。您应该存储直接从设备发送的收据。
您应该仅依赖 original_transaction_id
并通过此 ID 找到您的客户。
顺便说一句,无需更新您的 Base64 收据,因为它始终会为您提供最新的交易。
我建议您阅读我们博客中的这篇文章:https://blog.apphud.com/subscriptions-notifications/
如果您需要帮助,请告诉我们。谢谢!
关于iOS 自动更新订阅 veirfyReceipt 返回与设备不同的 base64 收据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58436121/