如何处理自动续订订阅重新订阅?

时间:2021-03-25 07:35:37

标签: ios swift in-app-purchase subscription storekit

我正在我的 iOS 应用程序中实现自动更新订阅。在沙盒模式下 5 分钟后每月订阅自动续订。我在 appDelegate 中添加了事务观察者。因此,当应用程序重新启动时,更新的事务方法被调用并且我正在获取以下日志。

支付商店购买的产品 il_pkg1_1month_2 支付商店购买的产品交易 ID 可选(“1000000792969469”) 支付商店购买的产品 il_pkg1_1month_2 支付商店购买的产品交易 ID 可选(“1000000792972183”) 支付商店购买的产品 il_pkg1_1month_2 支付商店购买的产品交易 ID 可选(“1000000792976003”) 支付商店购买的产品 il_pkg1_1month_2 支付商店购买的产品交易 ID 可选(“1000000792978690”) 支付商店购买的产品 il_pkg1_1month_2 支付商店购买的产品交易ID Optional("1000000792982052")

我的问题是

1)当应用程序打开并更新交易时,不会调用此方法。这是正确的行为吗?

  1. 我计划在调用此方法时(在服务器端)实现收据验证。所以假设当我打开应用程序并且交易被自动更新多次时。我是否需要为每笔交易或最新的交易实现验证收据?如果应用已打开且交易已自动续订,如何验证收据?

3) 我在同一个订阅组中有 3 种计划。我无法在沙盒模式下升级/降级,是否可以在沙盒模式下测试升级/降级?

4)订阅到期后,如果我从管理订阅页面续订订阅,则调用更新的交易方法,但我收到的交易与续订前相同。即使交易到期日与续订前相同。这是正确的行为,我是否需要做任何其他事情。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

  1. 这是预期的行为,还要注意,每次后续购买都有一个 original_transaction_id,因此您可以知道原始购买是什么。

  2. 每当您调用服务器收据验证时,您都会发送应用程序当前拥有的收据数据,Apple 始终会返回最新的收据信息。因此,只要您想验证订阅是否仍然有效,或者任何后续转换发生以验证重新订阅,您都可以致电 Apple。您还可以将应用收据中的数据存储在服务器上,以便仅在服务器端不时检查,以验证订阅是否仍然有效且未被取消。

  3. 我认为您过去可以在沙盒中升级/降级,如果不是从设备设置中的沙盒帐户编辑页面,则尝试在您的应用中允许降级/升级购买。至少我相信它应该使用 Xcode 12 App Store 配置本地 StoreKit 测试工作。

  4. 我不确定您看到的这种行为是否正常,如果您在订阅过期后订阅,它的行为应该像新购买一样 - 但仍具有原始订阅的 original_transaction_id。