我对订阅我的应用的用户的收据验证过程感到有些困惑。
在用户加入然后购买订阅的那一刻,收据将被base64编码并发送到我的服务器。每天午夜,服务器将存储在我的数据库中的收据发送给Apple进行验证并更新到期日。
现在我对每个月如何更新收据感到困惑。请查看以下流程,如果这是正确的,请告诉我。
此流程是否正确?因为我每个月都会发送原始(1月)收据,它是否仍然包含最新的续订信息,或者当用户登录或打开应用程序时,我是否每个月都要刷新收据?
答案 0 :(得分:2)
是的,您的理解或多或少是正确的。当用户第一次更新时,会发生以下几件事:
下次用户启动应用时,您的SKPaymentQueue
代表将收到新的SKPaymentTransaction
新交易。您需要准备好与您的代理人一起观察此交易并完成它。如果不这样做,交易将在几个月内继续堆积。
Apple收到的第一次收到的verifyReceipt
响应将更新latest_receipt_info
密钥,以包含收据数据的最新版本。 latest_receipt_info
最初只是receipt.in_app
字段的副本,但在第一次续订后,它将包含最新的事务。您应该使用这些latest_receipt_info
事务来更新到期日期。
我的建议行为是,当您收到新的SKPaymentTransaction
时,无论如何都将其发送到您的服务器(虽然您在技术上不需要),并且您在完成交易之前使用它来验证和更新到期日期。您可以使用新收据覆盖旧收据。
您可以查看RevenueCat iOS framework source code以了解我如何处理它。 (如果缺少收据数据,您还应确保触发提取收据请求,我在代码中执行此操作。)
如果您对开箱即用的解决方案感兴趣,RevenueCat是一项服务,我开始自动处理所有这些和更多边缘情况。