在 Android 中检查应用内订阅的状态
Posted
技术标签:
【中文标题】在 Android 中检查应用内订阅的状态【英文标题】:Check the status of In-App Subscription in Android 【发布时间】:2015-11-04 14:26:18 【问题描述】:我创建了一个应用程序,其中有应用程序内购买,每月自动续订。在第一次成功付款时,我调用了一个网络服务,我在其中让用户进入高级课程。
现在如果用户从谷歌服务器手动取消了付款,我怎么知道用户已经取消了他/她的订阅。
是否有一些 php 代码查询或来自 android 我必须在后台调用某些东西来检查状态?
谢谢你
【问题讨论】:
【参考方案1】:我还没有对此进行测试,但是您可以使用 INAPP_PURCHASE_DATA 中的autoRenewing
字段吗?
如果为 true,则订阅处于活动状态,并将在下一个计费日期自动续订。 如果为 false,则表示用户已取消订阅。
http://developer.android.com/google/play/billing/billing_reference.html#getBuyIntent
显然,添加了autoRenewing
字段或至少记录了in the beginning of 2015。
【讨论】:
【参考方案2】:您可以通过
在应用内查看已购买的订阅编辑:订阅使用“subs”,inapp-purchases使用“inapp”,例如:
应用内购买:mService.getPurchases(3, getPackageName(), "inapp", null);
订阅:mService.getPurchases(3, getPackageName(), "subs", null);
另请参阅Querying for Purchased Items
http://developer.android.com/google/play/billing/billing_integrate.html
因此,您可以在应用中实施一项任务,检查用户是否仍有订阅。如果没有,您可以删除高级状态。此外,这些信息可能对您有用:
当用户取消订阅时,Google Play 不会为当前的结算周期提供退款。相反,它允许用户在当前计费周期结束之前访问已取消的订阅,届时它会终止订阅。例如,如果用户购买了每月订阅并在周期的第 15 天取消它,Google Play 将认为该订阅在第 30 天(或其他日期,具体取决于月份)结束之前有效。
来源:http://developer.android.com/google/play/billing/billing_subscriptions.html 下 subscription cancelled
希望对你有帮助
Edit2:因为我的回答中提到的AIDL库在未来被弃用和停用,建议切换到新的Google Play Billing Library。
【讨论】:
你的建议是错误的。 mService.getPurchases(3, getPackageName(), "inapp", null);用于一次性购买。您应该使用“subs”而不是“inapp”来获取订阅 感谢您提供的信息。我更正了我的答案:-) 这些方法在新的 Play 结算库中不可用。有什么办法吗? 谢谢。我正在获取旧的缓存购买结果。我有 gmail 收据,续订成功。获得最新结果需要多长时间。有什么想法吗?【参考方案3】:检查 getPurchases() 方法here。或者,如果您使用 Android Studio 并下载了源代码,只需在 IInAppBillingService.getPurchases
方法上按 Ctrl
+ Q
【讨论】:
从 google play 应用程序取消后,它给出的是购买状态而不是订阅状态。以上是关于在 Android 中检查应用内订阅的状态的主要内容,如果未能解决你的问题,请参考以下文章