Apple Auto Renewable Subscriptions - 针对收据验证用户

时间:2017-11-10 17:34:34

标签: ios subscription

我对订阅我的应用的用户的收据验证过程感到有些困惑。

在用户加入然后购买订阅的那一刻,收据将被base64编码并发送到我的服务器。每天午夜,服务器将存储在我的数据库中的收据发送给Apple进行验证并更新到期日。

现在我对每个月如何更新收据感到困惑。请查看以下流程,如果这是正确的,请告诉我。

  1. 用户注册并订阅我的应用程序。(可以说是1月份)。
  2. 原始收据将发送到我的服务器,然后通过Apple验证,将返回失效日期并在我的服务器上设置。
  3. 在2月的一个月后的有效期限内,我再次将原始(1月)收据发送给Apple以查看订阅是否已续订,然后我可以设置新的到期日期。
  4. 此流程是否正确?因为我每个月都会发送原始(1月)收据,它是否仍然包含最新的续订信息,或者当用户登录或打开应用程序时,我是否每个月都要刷新收据?

1 个答案:

答案 0 :(得分:2)

是的,您的理解或多或少是正确的。当用户第一次更新时,会发生以下几件事:

  1. 下次用户启动应用时,您的SKPaymentQueue代表将收到新的SKPaymentTransaction新交易。您需要准备好与您的代理人一起观察此交易并完成它。如果不这样做,交易将在几个月内继续堆积。

  2. Apple收到的第一次收到的verifyReceipt响应将更新latest_receipt_info密钥,以包含收据数据的最新版本。 latest_receipt_info最初只是receipt.in_app字段的副本,但在第一次续订后,它将包含最新的事务。您应该使用这些latest_receipt_info事务来更新到期日期。

  3. 我的建议行为是,当您收到新的SKPaymentTransaction时,无论如何都将其发送到您的服务器(虽然您在技术上不需要),并且您在完成交易之前使用它来验证和更新到期日期。您可以使用新收据覆盖旧收据。

    您可以查看RevenueCat iOS framework source code以了解我如何处理它。 (如果缺少收据数据,您还应确保触发提取收据请求,我在代码中执行此操作。)

    如果您对开箱即用的解决方案感兴趣,RevenueCat是一项服务,我开始自动处理所有这些和更多边缘情况。