我正在编写一个支持应用内订阅的应用程序。这些订阅将使我的用户能够使用一些服务和福利,超出了安卓世界之外。我知道可以使用Google Play开发者API来查询订阅的状态,但由于所提供的服务和福利的性质,这样做并不是很方便。我想知道是否有一种方法在订阅状态改变时得到通知。例如,类似于Web钩子的东西。
我正在编写一个支持应用内订阅的应用程序。这些订阅将使我的用户能够使用一些服务和福利,超出了安卓世界之外。我知道可以使用Google Play开发者API来查询订阅的状态,但由于所提供的服务和福利的性质,这样做并不是很方便。我想知道是否有一种方法在订阅状态改变时得到通知。例如,类似于Web钩子的东西。
我本想回复你的评论,但似乎我的回复太长了。此外,这也是对你问题的一种回答,所以我认为直接把它作为一个答案发出去可能是个好主意。或许这甚至能解决你的问题。
关于你的评论,其实你不一定需要这样做。现在,我不知道你的系统需求,但我会分享我的经验,希望能对你有所帮助。
在你的服务器上保存Users
和Subscriptions
(数据库表)。在Subscriptions
表上有一个check_at
列,另外还有一个renew_at
列。假设用户在1月1日创建了一个月的订阅。在那一天,购买完成后,你从Android调用你的服务器,保存订阅详情,然后将renew_at
设置为2月1日,而将check_at
设置为2月4日,考虑到你在Google Play开发人员控制台中将事务失败延迟3天。这样,如果支付失败,用户在2月1日到2月3日有时间更改信用卡信息。然后在4日,你将检查Google Play API的订阅详细信息。但不要在2月1日到4日之间禁用高级功能。如果订阅被取消,则在4日后禁用它。这样,高级内容既不会延迟也不会被篡改。如果API返回的订阅结束日期在未来,则表示已经续订了,因此你应该保持高级激活。那么,你如何每月的4日进行检查呢?使用某种计划程序在数据库上安排任务。
这样一来,你就不需要依赖Webhooks了。虽然我同意,Webhooks可能更有效率,而且可能更容易实现。
如果你有什么问题或者有什么漏洞,请告诉我。