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

Android-如何检查订阅是否已续订?,android,in-app-purchase,in-app-billing,Android,In App Purchase,In App Billing,我有一个android应用程序,每月可续费订阅。在这个应用程序中,我想在下个月继续订阅时通知用户一些信息 正如我在merchant center中看到的续订(orderId以eg…0,…1结尾),但在查询库存时,我的采购订单ID与eq之前相同 { "orderId": "GPA.XXXX-YYYY-XXXX-ZZZZZ", "packageName": "my.packageName", "productId": "my.sku", "purchaseTime":

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

正如我在merchant center中看到的续订(orderId以eg…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
}
更让我烦恼的是,购买时间也没有改变

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

编辑:


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

只有在订阅处于活动状态时才会返回订阅的购买数据。 如果订阅过期,则在查询库存时将无法获取此购买数据

摘自

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


INAPP\u PURCHASE\u DATA
JSON字段(在V3中)的
orderId
字段中返回所有重复发生的订单id,每个重复发生的交易都附加一个整数

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

但由于您可能无法获得最新信息。所以,请尝试从application manager中清除缓存,以首先查看您是否获得了正确的购买信息

由于这种方式的购买查询不可靠,因此从后端调用Google Play Developer API来获取将返回当前订阅的
expiryTimeMillis
更为合理

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

您可以在数据库中提供过期日期,每次获取数据时,您都可以使用数据库的值检查过期日期,如果过期日期更晚,则续订。)

您提供的是一种查询Google Play Developer API以获取订阅的方法,这可以从服务器端完成。但问题是在设备端查询资源清册。如果无法在设备端可靠地检查资源清册,是否最好尝试其他有助于实现目的的选项,即检查订阅是否已续订?这很公平。但您要知道,在文档中,他们明确指出,如果订阅已过期或不再有效,则在查询库存时不会返回购买详细信息。我已经在我的答案中发布了链接。只有在订阅过期时,你才能获得它的购买详细信息。但是如果它是活动的,您将获得它的到期时间。如果订阅处于自动续订状态,我希望我们能够使用当前的到期时间计算下一个定期事务开始时间。使用自动续订订阅,直到没有失败的交易或取消,将有一个活动订阅。@random我尝试清除我的应用程序甚至google play store应用程序的缓存,在少数设备上进行了测试(使用相同的google帐户),但我仍然获得了相同的订购ID。这正常吗?另外,我还有一个问题:在我提供所需信息并调用GooglePlay开发者API的地方,是否有任何后端服务可以使用?我找了又没找到。
{
  "kind": "androidpublisher#subscriptionPurchase",
  "startTimeMillis": long,
  "expiryTimeMillis": long,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": long,
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer
}