11

我在我的应用程序中实施了每月订阅,以在我们的网络服务器上激活用户。我已经在我的项目中成功实现了订阅代码。如果用户从 google play store 我的应用配置文件中取消订阅,我想停用用户。如果用户根据document-1document-2取消订阅产品,我已经实现了获取产品订阅详细信息。

问题是什么?

我无法根据文档测试订阅产品购买。因此,我会将已签名的版本提供给客户,他们将使用信用卡和实际产品购买进行检查。但是如何测试用户取消订阅时客户端会得到什么响应?

对于取消产品:我每天使用服务获取访问令牌并检查 validUntilTimestampMsec 是否大于零,然后检查 autoRenewing 标志是否为假,如果两者都为真,则停用用户。但不知道这个逻辑是对是错。

if (validUntilDateInMilli > 0) {
    if ((System.currentTimeMillis() > validUntilDateInMilli)
                        && (!autoRenewingFlag)) {
        // call web service to deactivate user

        new AsyncTaskDeActivateBusinessOwner().execute();
    } 
}

我只从developer api的官方文档中得到了这个响应,如下所示:

{
  "kind": "androidpublisher#subscriptionPurchase",
  "initiationTimestampMsec": {long},
  "validUntilTimestampMsec": {long},
  "autoRenewing": {boolean}
}

根据我在 Google 和 StackOverFlow 上搜索的内容,但没有文档我发现以下条件的响应是什么:

what is the response 

1) if the user currently has the subscription and 
2) if user has cancelled subscription(in 15 days) or if subscription cycle is completed.

请任何已从谷歌开发者 api 测试订阅端到端购买并取消订阅 validUntilDate 的人。

任何帮助将不胜感激。先感谢您。

4

1 回答 1

4

无论订阅取消状态如何,Google Play API get都会为您提供类似的购买结果。因此,目前您无法确定用户是否取消了订阅。

您必须在到期日期之后检查订阅是否有效。

仅在到期时查询订阅状态 — 一旦您的服务器检索到订阅令牌的到期日期,它不应该再次向 Google Play 服务器查询订阅状态,直到订阅到达或已超过到期日期。

http://developer.android.com/google/play/billing/gp-purchase-status-api.html

validUntilTimestampMsec(在购买结果中)与当前时间进行比较,以查看订阅是否已结束。

于 2013-10-13T07:07:00.323 回答