Android - 如何检查订阅是否续订?

时间:2016-04-13 07:30:58

标签: android in-app-purchase in-app-billing

我有一个可更新的每月订阅的Android应用程序。在这个应用程序中,我想在下个月他的订阅继续时通知用户一些信息。

正如我可以看到商家中心的续订(orderId以例如.0,..1结尾),但在查询库存时,我的采购订单ID与当前情况相同。

{
    "orderId": "GPA.XXXX-YYYY-XXXX-ZZZZZ",
    "packageName": "my.packageName",
    "productId": "my.sku",
    "purchaseTime": 1456398623654,
    "purchaseState": 0,
    "developerPayload": "mypayload",
    "purchaseToken": "token",
    "autoRenewing": true
}

令我烦恼的是,buyTime也不会改变。

所以我的问题是:如果有任何方法可以在应用程序中检测到更新发生了吗?

编辑:

我正在使用Google Play Developer API获取订阅信息,然后自行计算续订次数。

2 个答案:

答案 0 :(得分:7)

所有重复的订单ID在orderId JSON字段的INAPP_PURCHASE_DATA字段中返回(在V3中),每个周期性事务都附加一个整数。

Subscription order numbers

  

为了帮助您跟踪与给定订阅相关的交易,   Google付款为所有人提供基本商家订单号   订阅的重复发生并表示每个重复交易   通过附加一个整数,如下所示:

GPA.1234-5678-9012-34567 (base order number)
GPA.1234-5678-9012-34567..0 (first recurrence orderID)
GPA.1234-5678-9012-34567..1 (second recurrence orderID)
GPA.1234-5678-9012-34567..2 (third recurrence orderID) ...

但由于local caching,您可能无法获得最新信息。因此,请尝试从应用程序管理器清除缓存,首先查看您是否获得了正确的购买信息。

由于购买查询方式不可靠,因此从后端调用Google Play开发人员Purchases.subscriptions: get API以获取Purchases.subscriptions resource将更有意义,该{{3}}将返回当前订阅的expiryTimeMillis。< / p>

{
  "kind": "androidpublisher#subscriptionPurchase",
  "startTimeMillis": long,
  "expiryTimeMillis": long,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": long,
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer
}

答案 1 :(得分:4)

订阅的购买数据仅在订阅处于活动状态时返回。 如果订阅到期,那么当您查询库存时,您将无法获得此购买数据。

摘自link

  

如果定期付款失败(例如,因为客户的付款   信用卡已变为无效),订阅不续订。该   getPurchases()方法不会返回失败或过期的订阅。