【问题标题】:Notification of cancellation of auto-renewal for an in-app purchase应用内购买取消自动续订的通知
【发布时间】:2011-06-10 05:55:26
【问题描述】:

我正在开发一款 iPhone 应用,我想为应用内购买实施新的自动续订模式。我能够成功实现交易,甚至可以订阅应用程序,但如果用户取消自动续订订阅怎么办?

我如何知道它已被取消,因此不能继续允许访问(一旦过期)?

【问题讨论】:

    标签: objective-c ios cocoa-touch in-app-purchase


    【解决方案1】:

    您可以通过向 Apple 的服务器发送收据验证来查找用户订阅的到期日期。查看In-App Purchase Programming Guide上的图1-3。

    基本上步骤是:

    1. 在设备上,获取应用内购买的交易收据。您在交易期间或通过调用[SKPaymentQueue restoreCompletedTransactions] 保存的一个。
    2. 将该收据发送到您的服务器。 (这比尝试直接从应用程序与 Apple 的服务器进行收据验证相比更可取,因为这需要您将共享密钥存储在设备上。)
    3. 将收据从您的服务器发送到 Apple 的服务器,并在响应中查找名为 expires_date 的密钥(自格林威治标准时间 1970 年 1 月 1 日起以 毫秒 秒表示)。

    我使用本指南在服务器端帮助我:Verifying Apple App Store Receipts For In App Purchases With PHP and cURL

    无法确定用户是否打开或关闭了自动续订。 Apple 不会让您访问这些信息。唯一的方法是等到到期日期过去而不续订。

    【讨论】:

    • 嘿,andrew,可以从 iTunes account1 订阅,然后将 iTunes Account 更改为 Account2,App 应该继续使用新的 iTunes Account,即 Account2。该应用程序不应要求从 iTunes 帐户购买 2. 我应该如何管理。?我正在使用自动续订订阅。
    【解决方案2】:

    如果收据状态为21006 并且有一个名为cancellation_date 的键,那么它是取消,您可以在该键中找到新的到期日期,但它是一个格式化的日期,如果您需要更好的值来解析检查receipt['latest_expired_receipt_info']['cancellation_date_ms'] 是否与expires_date 相同

    【讨论】:

    • 我没有收到收据['latest_expired_receipt_info']。是不是越来越多了?
    • 我没有得到任何提到的密钥。
    • 仅针对自动续订订阅的 iOS 6 样式交易收据返回 (Apple Developer Documentation)
    猜你喜欢
    • 2013-05-29
    • 2015-10-07
    • 2017-01-10
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2018-06-01
    • 2016-01-25
    相关资源
    最近更新 更多