web-dev-qa-db-ja.com

Android-サブスクリプションが更新されているかどうかを確認するにはどうすればよいですか?

Android更新可能な月額サブスクリプションのアプリがあります。このアプリでは、ユーザーのサブスクリプションが来月も続くときに、ユーザーに情報を通知したいと思います。

マーチャントセンターで更新を確認できますが(orderIdはたとえば..0、.. 1で終わります)、在庫を照会すると、購入orderIdは前の式と同じになります。

{
    "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を使用してサブスクリプション情報を取得し、自分で更新数を計算しています。

15
Axxxon

すべての繰り返しの注文IDは、INAPP_PURCHASE_DATAJSONフィールド(V3の場合)のorderIdフィールドに返され、各繰り返しトランザクションには整数が追加されます。

サブスクリプション注文番号

特定のサブスクリプションに関連するトランザクションを追跡しやすくするために、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) ...

ただし、 ローカルキャッシュ のため、最新の情報が得られない場合があります。したがって、アプリケーションマネージャからキャッシュをクリアして、正しい購入情報を取得できるかどうかを最初に確認してください。

この方法での購入クエリは信頼できないため、Google Play Developerを呼び出す方が理にかなっています Purchases.subscriptions:get バックエンドからAPIを取得して Purchases.subscriptions resource 現在のサブスクリプションのexpiryTimeMillis

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

サブスクリプションの購入データは、サブスクリプションがアクティブな場合にのみ返されます。サブスクリプションの有効期限が切れると、在庫を照会したときにこの購入データを取得できなくなります。

リンク からの抜粋

定期的な支払いが失敗した場合(たとえば、顧客のクレジットカードが無効になったため)、サブスクリプションは更新されません。 getPurchases()メソッドは、失敗したサブスクリプションまたは期限切れのサブスクリプションを返しません。

5
Anirudha Agashe

DBで有効期限を提供でき、データを取得するたびに、DBの値で有効期限を確認できます。それより遅い場合は、サブスクリプションが更新されます))

1