Android In-App Billing Subscription状态更改回调

pap*_*adi 10 android subscription in-app-purchase in-app-billing google-play

我正在编写一个支持应用内订阅的应用.订阅将使我的用户能够在Android世界之外使用许多服务和优势.我知道我可以使用Google Play Developer API来查询订阅状态,但由于提供的服务和优势的性质,这样做并不是很方便.我想知道是否有办法在订阅更改时获得有关订阅状态的通知.比如Web钩子之类的东西.

Bog*_*rac 8

我想发表评论以回应你的评论,但显然这太长了.除此之外,它也是你问题的答案,所以我认为将它作为答案发布可能是一件好事.也许它甚至可以解决你的问题.

所以,关于你的评论.你不一定要那样做.现在,我不知道你的系统要求,但我会分享我的,并希望它可以帮助你.

保存UsersSubscriptions在您的服务器上(数据库表).除了一个check_atSubscriptions之外,桌子上还有一列renew_at.假设用户在1月1日创建了每月订阅.在第一天,您在购买完成后从Android呼叫您的服务器,保存订阅详细信息,然后设置renew_at为2月1日和check_at2月4日,考虑您在Google Play开发者控制台中设置3天作为交易失败的延迟.这样,如果1日付款失败,用户有时间从2月1日到2月3日更改信用卡详细信息.然后在第4天,您将查看Google Play API以了解订阅详情.但请勿在2月1日至4日期间禁用高级功能.如果订阅被取消,请在4日禁用它.这样,优质内容不会以任何方式延迟或篡改.如果API返回的订阅结束日期是将来的,那么它已续订,因此您应该保持激活溢价.现在,您如何在4月份每月检查一次.使用某种调度程序来计划数据库上的任务.

这样您就无需依赖webhooks.虽然我同意,但webhooks会更高效,甚至可能更容易实现.

如果您有任何问题或我所描述的系统存在一些缺陷,请告诉我.

  • 感谢您的回答@Andrew,我之前在Stripe中实现了订阅,现在谷歌在应用程序产品中感觉像是在石器时代. (3认同)
  • 回到博格丹的解决方案。用户可以升级/降级订阅(如果您有多个可用产品)或终止订阅并退款。因此,在某些情况下,您可能想要删除或替换他/她的高级功能。这就是为什么每月查询一次 Google 的 API 是不够的。我建议实施实时通知,并仍然定期查询 API,作为后备方案,以防任何 RTN 请求未到达您的服务器。 (2认同)

Naj*_*jki 7

查看使用 Google Cloud 的 PubSub 服务的实时通知。它发送付款/订阅事件的通知,例如:新购买、续订、取消等。它包括可用于从 API 检索附加信息的令牌,就像您现在所做的那样。

您还可以将此 PubSub 订阅配置为对您收到的每条消息调用自定义 webhook(仍需要查询 PubSub)。

  • 您可以在应用程序内进行的初始购买中使用 developerPayload 参数将您的用户 ID 传递给 Google。接下来,当您收到 PubSub 通知时,它将包含 purchaseToken,并且在使用此 purchaseToken 查询 Google API 以获取订阅详细信息时,您将获得您的 developerPayload 值。 (2认同)