ios - 用于自动续订订阅通知的应用内购买

标签 ios subscription in-app-purchase

我一直在阅读有关应用内购买自动续订订阅的各种话题,我认为我已经拼凑了大部分我需要的信息,但还缺少一些信息。我希望有人能帮助我。

情况: 我有用户可以订阅的各种订阅包(例如,包 A 每月 1 英镑,包 B 每月 2 英镑等)。我将用户的订阅信息存储在我的数据库中。当用户登录时,我会检查他使用的是哪个包裹,以及它是否已过期。我的网站、android 和 iOS 都使用相同的数据库,因此这种方法似乎很有意义。

通过应用内购买订阅用户似乎非常简单。我检查 paymentQueue,一旦付款清算,我就可以更新我的数据库。

我的问题:

1) 我的理解是用户可以使用 iTunes 来管理他们的订阅。比如说,他们进入 iTunes 并取消了他们的订阅,如何通知我以便更新我的数据库?我是否需要一个守护程序来检查过期订阅以查看用户是否续订?

2) 如果用户想将他们的订阅从套餐 A 升级到套餐 B,我该如何处理定价?比如在 1 月 1 日,他们购买套餐 A,我向他们收取 1.00 英镑,并将到期日期设置为 1 月 31 日。 1 月 15 日,他们想通过应用内购买升级到套餐 B。理想情况下,我会向他们收取 2 英镑的套餐 B 减去他们对套餐 A 的 0.50 英镑信用额度,并将新的到期日期设置为 2 月 14 日。但是,Apple 强制我将每个包与等级价格相关联。我该如何处理?我不希望用户等到月底才将他们放在更高级别的包中......如果他们在月中升级,这意味着他们希望新的内容包 B 立即交付给他们。

感谢任何帮助!

谢谢!

最佳答案

1) 是的,您必须重新验证您的收据,查看 Receipt Validation Programming Guide in the documentation .他们提到了一些重要的关键:

  • status - 如果收据有效则为 0,否则为错误代码
  • receipt - 收据的 JSON 响应
  • latest_receipt(仅限自动续订)- 最近续订的 base 64 编码收据
  • latest_receipt_info - latest_receipt 的 JSON 版本

有了这些信息,在进行购买时,将收据发送到您的后端进行验证,后端会将收据保存在数据库中,并使用 status = 0 验证它是否是有效收据。从那里开始,每隔 x 天,您就可以使用计时作业、守护程序等验证该收据并重新验证。每次返回的响应都将包含 latest_receipt_info,您现在需要将其保存到您的数据库中,以便您在 x 天内获得下一次检查的最新收据。这样您将始终拥有最新的收据。没有即时通知告知用户何时取消订阅,但有了这个,您将每隔 x 天知道他们是否仍在订阅。

2) 不幸的是,无法处理这样的定价。它不是为了让用户通过订阅“升级”——在撰写本文时,每个订阅都可以访问它自己的专有内容。但是,如果客户通过电子邮件投诉,您可以询问他们的用户名并在您的数据库中找出该用户是否确实在月中升级并适本地报销他们。非常老派,对于庞大的用户群来说不可行,但希望您不会拥有那么多用户,并能让他们满意。

关于ios - 用于自动续订订阅通知的应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16893010/

相关文章:

ios - 更改 subview Controller 的宽度

ios - 从 SKPaymentTransaction 获取订阅价格

iPhone 应用内购买订阅会自动续订吗?

objective-c - 在App内购买iOS访问AppleId

ios - 如何在 iOS Swift 中进行多线程、并发或并行?

IOS 相当于 abort() 用于断言失败

ios - 如何从一个屏幕获取数据并将其添加到另一个屏幕上的 UIView 中?

Android Billing V3 订阅问题 - 订阅卡在无法取消的状态

objective-c - 解锁应用内购买的指南/建议

ios - IAP - 可以获取免费订阅产品但不能获取付费产品