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

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

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

您可以通过向Apple的服务器发送收据validation来查找用户订阅的到期date。 查看“ 应用内购买编程指南”中的图1-3。

基本上这些步骤是:

  1. 在设备上,获取应用内购买的交易收据。 您在交易中保存的任何一个或通过调用[SKPaymentQueue restoreCompletedTransactions]
  2. 将该收据发送到您的服务器。 (这比直接从应用程序直接向苹果服务器进行收据validation要好,因为这会要求您将共享密钥存储在设备上。)
  3. 将收据从服务器发送到Apple的服务器,并在响应中查找名为expires_date的密钥(自1970年1月1日起以毫秒为单位表示)。

我用这个指南来帮助我在服务器端: validation苹果应用程序商店收据的应用程序内购买与PHP和cURL 。

无法确定用户是否已启用或禁用自动续订function。 苹果公司不允许你访问这些信息。 唯一的办法就是等到失效date过去而没有更新。

如果收据状态是21006并且有一个名为cancellation_date的密钥,那么这是一个取消操作,您可以在该密钥中find新的过期date,但是这是一个格式化date,如果您需要更好的值来parsingreceipt['latest_expired_receipt_info']['cancellation_date_ms']检查receipt['latest_expired_receipt_info']['cancellation_date_ms']expires_date相同