16

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

情况:我有各种用户可以订阅的订阅套餐(例如,套餐 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 立即交付给他们。

任何帮助表示赞赏!

谢谢!

4

6 回答 6

4

1) 是的,您必须重新验证您的收据,查看文档中的收据验证编程指南。他们提到了一些重要的关键:

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

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

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

于 2016-01-12T19:41:22.453 回答
3

已编辑

对于第二个问题,Apple 的自动续订订阅系统在技术上并不提供不同产品之间的可升级计划。

每个订阅都是一个独立的产品,用户可以使用 iTunes Store 中的订阅管理器手动打开/关闭订阅。

但是,如果包 A 和包 B 提供完全相同的内容,但持续时间与ajay_nasa所说的正确时不同,则您可以创建具有不同持续时间选项的单个自动订阅产品。如果用户订阅 1 个月,然后用户尝试更改为 2 个月订阅,他们将收到以下错误消息,要求他们转到 App Store 的订阅管理器

在此处输入图像描述

所以基本上用户可以实际更改订阅长度的唯一地方是在 App Store 中。Apple 是否决定按比例分配旧订阅的剩余金额,或者只是将其附加到当前订阅中,这实际上取决于 Apple。您需要通过阅读每个收据条目中的原始购买日期订阅到期日期字段并确定订阅的开始和结束日期来确保用户可以访问订阅,只要它处于活动状态。

于 2016-01-11T06:29:45.063 回答
2

回答问题 1,您可以像其他 IAP 一样验证订阅收据,但您需要定期检查订阅是否已过期(验证会告诉您是否过期)。

这里有更多关于 Apple 文档的信息:

http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/RenewableSubscriptions/RenewableSubscriptions.html

于 2013-08-08T12:42:06.740 回答
1

在此处输入图像描述实际上,Apple 的自动更新订阅系统确实提供了可升级的计划。

为了实现这一点,我们只需在现有的自动更新订阅中添加持续时间。每个 Auto-Renewable Subscription 都可以是 Subscriptions 家族,因此每当开发人员想要升级订阅时,他应该在现有的 Auto-Renewable Subscription 中添加具有不同 productID 的持续时间。

每当用户在当月之间升级他的计划时,他的升级计划将从下个月自动生效。

于 2016-01-19T10:07:11.023 回答
0

我们需要检查收据中提供的取消日期。

于 2018-01-04T08:02:18.530 回答
0

回答你的问题#1

最近,Apple 推出了一项功能,可以在订阅续订时启用服务器通知。但是,订阅应该是应用内的。

请参阅下面给出的链接以供参考:

https://help.apple.com/itunes-connect/developer/#/dev0067a330b

&

https://itunespartner.apple.com/en/apps/news/45333106?sc_cid=ITC-AP-ENREC

于 2017-07-20T15:49:52.397 回答