Android 应用内结算订阅状态更改回调
Posted
技术标签:
【中文标题】Android 应用内结算订阅状态更改回调【英文标题】:Android In-App Billing Subscription status change callbacks 【发布时间】:2015-07-19 03:49:19 【问题描述】:我正在编写一个支持应用内订阅的应用。这些订阅将使我的用户能够使用 android 世界之外的许多服务和好处。我知道我可以使用 Google Play Developer API 来查询订阅状态,但由于所提供服务和福利的性质,这样做不是很方便。我想知道是否有办法在订阅状态发生变化时得到通知。例如网络挂钩之类的东西。
【问题讨论】:
据我所知,没有其他支付处理器在网络上使用的 webhook。顺便说一句,你是如何实现的? 我还没有。我唯一的想法是在我的服务即将使用时查询订阅状态。我不想通过查询 Google Play 来延迟我的服务。这是我最关心的问题,但我想我将不得不忍受它。 【参考方案1】:我想发表评论以回应您的评论,但显然这太长了。除此之外,这也是对您问题的一种回答,所以我认为将其作为答案发布可能是一件好事。也许它甚至可以解决您的问题。
所以,关于您的评论。你不一定要那样做。现在,我不知道您的系统要求,但我只是分享一下我的,希望对您有所帮助。
将Users
和Subscriptions
保存在您的服务器(数据库表)上。在Subscriptions
表上有一个check_at
列,除了一个renew_at
。假设用户在 1 月 1 日创建了每月订阅。第一天,你在购买完成后从Android调用你的服务器,保存订阅细节,然后将renew_at
设置为2月1日,check_at
设置为2月4日,考虑到你在谷歌设置了3天交易失败延迟播放开发者控制台。这样,如果 1 日付款失败,用户有时间从 2 月 1 日到 2 月 3 日更改信用卡详细信息。然后在 4 日,您将查看 Google Play API 以了解订阅详情。但不要在 2 月 1 日至 4 日期间禁用高级功能。如果订阅被取消,请在 4 日禁用它。这样,优质内容不会被延迟或以任何方式篡改。如果 API 返回的订阅结束日期是将来的,那么它是续订的,所以你应该保持高级激活。现在,您可能会问,您如何在 4 号每月检查一次。使用某种调度程序来调度数据库上的任务。
这样您就无需依赖 webhook。虽然我同意,但 webhook 会更有效率,而且可能更容易实现。
如果您有任何问题或我描述的系统存在一些缺陷,请告诉我。
【讨论】:
感谢您的回答@Andrew,我之前在 Stripe 中实现了订阅,现在在应用产品中使用 Google,我感觉就像在石器时代。 我在同一条船上 :) 刚完成 Stripe,然后是苹果,现在是谷歌。 我个人发现 Google 的订阅方式比 Apple 的更容易实现,这要归功于实时通知(这就像 iTunes 中的一个可悲的笑话)。在我们的应用程序中实施 Apple 的订阅所花费的时间是 Google 订阅的 5 倍。最终结果也包含更多错误。 回到波格丹的解决方案。用户可以升级/降级订阅(如果您有多种产品可用)或通过退款终止订阅。因此,在某些情况下,您可能想要删除或替换他/她的高级功能。这就是为什么每月查询一次 Google 的 API 是不够的。如果任何 RTN 请求未到达您的服务器,我建议您实施实时通知并定期查询 API 作为备用。【参考方案2】:使用 Google Cloud 的 PubSub 服务查看 Real Time Notifications。它发送付款/订阅事件的通知,例如:新购买、续订、取消等。它包括可用于从 API 检索附加信息的令牌,就像您现在所做的那样。
您还可以将此 PubSub 订阅配置为在收到的每条消息上调用自定义 webhook(仍需要查询 PubSub)。
【讨论】:
我已经设置了Real Time Notifications
,它可以工作。我得到了令牌,我可以得到交易信息。但它不包含任何用户信息。我怎么知道来自哪个用户的交易?
您可以在应用内的初始购买中使用 developerPayload 参数将您的用户 ID 传递给 Google。接下来,当您收到 PubSub 通知时,它将包含 purchaseToken,并且在使用此 purchaseToken 查询 Google API 以获取订阅详细信息时,您将获得您的 developerPayload 值。【参考方案3】:
您可以使用我们的服务https://qonversion.io 跟踪您在 Android 和 ios 上的所有订阅事件,并使用网络挂钩将事件发送到您需要的地方。此外,还有许多开箱即用的集成,例如 Amplitude、AppsFlyer、Facebook 广告等等……
【讨论】:
以上是关于Android 应用内结算订阅状态更改回调的主要内容,如果未能解决你的问题,请参考以下文章