取消针对应用内购买的自动续订的通知

时间:2011-06-10 05:55:26

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

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

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

2 个答案:

答案 0 :(得分:4)

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

基本上步骤是:

  1. 在设备上,获取应用内购买的交易收据。您在交易期间保存的任何一方,或致电[SKPaymentQueue restoreCompletedTransactions]
  2. 将该收据发送到您的服务器。 (这比尝试直接从应用程序使用Apple服务器进行收据验证更受欢迎,因为这需要您将共享密钥存储在设备上。)
  3. 将收据从您的服务器发送到Apple的服务器,并在响应中查找名为expires_date的密钥(自格林威治标准时间1970年1月1日起以毫秒秒表示)。
  4. 我使用本指南在服务器端帮助我:Verifying Apple App Store Receipts For In App Purchases With PHP and cURL

    无法确定用户是否已启用或关闭自动续订。 Apple不允许您访问此信息。唯一的方法是等到失效日期过去而没有续订。

答案 1 :(得分:2)

如果收据状态为21006并且有一个名为cancellation_date的密钥,那么它是取消,您可以在该密钥中找到新的到期日期,但如果您需要,则为格式化日期更好地解析与receipt['latest_expired_receipt_info']['cancellation_date_ms']

相同的expires_date检查