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

标签 ios subscription storekit auto-renewable

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

在每次状态轮询中,我想更新 last_receipt_base64expired_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/

相关文章:

ios - RESTKit:删除带有主体参数的对象

iphone - 如何在页面 View Controller 的 ModelController.m 中构建数据源的方法内实现 "Cancel"按钮

IOS订阅结束通知

ios - 重置应用内购买以进行测试?

iphone - 应用内购买响应。产品为空

ios - 最后一行未调用 prefetchRowsAt

ios - 在 Xcode 10 中为企业分发时代码签名框架失败

iOS 使用外部订阅服务

reporting-services - 如何为 SSRS 中的所有报表订阅设置一个中央位置?

ios-simulator - IOS 13 测试版 5 : Does SKProductsRequest supposed to work on simulator?