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

Android - How to check if subscription is renewed?

我有一个 android 应用程序可以续订月度订阅。在这个应用程序中,我想在下个月继续订阅时通知用户一些信息。

我可以在商家中心看到续订(orderId以例如..0,..1结尾),但是在查询库存时我的采购订单Id与eq之前相同

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

更让我困扰的是 purchaseTime 也没有改变。

所以我的问题是:是否有任何方法可以在应用程序中检测到发生了续订?

编辑:

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

订阅的购买数据仅在订阅有效时返回。 如果订阅过期,那么您在查询库存时将不会获​​得此购买数据。

摘自 link

If a recurring payment fails (for example, because the customer’s credit card has become invalid), the subscription does not renew. The getPurchases() method does not return failed or expired subscriptions.

所有重复的订单 ID return编辑在 INAPP_PURCHASE_DATA JSON 字段(在 V3 中)的 orderId 字段中,每个重复交易都附加一个整数。

Subscription order numbers

To help you track transactions relating to a given subscription, Google payments provides a base Merchant Order Number for all recurrences of the subscription and denotes each recurring transaction by appending an integer as follows:

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 Developer Purchases.subscriptions: get API from a backend to get Purchases.subscriptions resource 更有意义,这将 return expiryTimeMillis 当前订阅。

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

您可以在数据库中提供到期日期,每次获取数据时,您可以使用数据库的值检查到期日期,如果晚了,则订阅已续订))