检查Android中的应用程序内订阅状态

Gau*_*ang 8 php java android in-app-purchase in-app-billing

我已经创建了一个应用程序,其中有应用内购买,每月自动续订..在第一次成功付款时,我已经调用了一个网络服务,我已经让用户进入高级课程.

现在,如果用户已从谷歌服务器手动取消付款,我怎么知道该用户已取消他/她的订阅.

是否有一些PHP代码查询或从Android我必须在后台调用一些东西来检查状态?

谢谢你的推荐

spc*_*ial 7

您可以通过以下方式检查应用内购买的订阅

编辑:对于订阅使用"subs",对于inapp-purchases使用"inapp",例如:

应用程式内,购买: mService.getPurchases(3, getPackageName(), "inapp", null);

订阅: mService.getPurchases(3, getPackageName(), "subs", null);

另请参见Querying for Purchased Itemshttp://developer.android.com/google/play/billing/billing_integrate.html

因此,您可以在应用中实施一项任务,检查用户是否仍有订阅.如果没有,您可以删除高级状态.此外,这些信息可能对您有用:

当用户取消订阅时,Google Play不会为当前结算周期提供退款.相反,它允许用户访问已取消的订阅,直到当前结算周期结束,此时它终止订阅.例如,如果用户购买了每月订阅并在周期的第15天取消订阅,则Google Play会认为订阅有效,直到第30天结束(或其他日期,具体取决于月份).

来源:http://developer.android.com/google/play/billing/billing_subscriptions.htmlsubscription cancelled

希望这可以帮到你

  • 你的建议是错误的.mService.getPurchases(3,getPackageName(),"inapp",null); 用于一次性购买.您应该使用"subs"而不是"inapp"来获取订阅 (4认同)
  • 这些方法在新的 Play 结算库中不可用。有什么办法吗? (2认同)

Juu*_*nen 7

我没有测试过这个,但你可以autoRenewing在INAPP_PURCHASE_DATA中使用该字段吗?

如果为true,则订阅处于活动状态,并将在下一个结算日期自动续订.如果为false,则表示用户已取消订阅.

http://developer.android.com/google/play/billing/billing_reference.html#getBuyIntent

显然,该autoRenewing领域已于2015年初增加或至少记录在案.