リアルタイム デベロッパー通知のリファレンス ガイド

このドキュメントでは、 Google Play から受信できるリアルタイム デベロッパー通知のタイプについて説明します。

エンコード

Cloud Pub/Sub トピックに対して行われた各パブリッシュには、base64 でエンコードされたデータ フィールドが 1 つ含まれます。

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

base64 でエンコードされたデータ フィールドをデコードすると、DeveloperNotification に以下のフィールドがあります。

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

各フィールドについては、下の表をご覧ください。

プロパティ名 説明
version 文字列 この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。
packageName 文字列 この通知に関連するアプリのパッケージ名(例: com.some.thing)。
eventTimeMillis long イベント発生時のタイムスタンプ(エポックからのミリ秒数)。
subscriptionNotification SubscriptionNotification

このフィールドが存在する場合、この通知は定期購入に関連しており、このフィールドには定期購入に関する追加情報が含まれています。

このフィールドは、 pendingRefundReviewNotification、oneTimeProductNotification、 voidedPurchaseNotification、testNotification と相互に排他的です。

oneTimeProductNotification OneTimeProductNotification

このフィールドが存在する場合、この通知は 1 回だけの購入に関連しており、このフィールドには購入に関する追加情報 が含まれています。

このフィールドは、pendingRefundReviewNotification、subscriptionNotification、voidedPurchaseNotification、testNotification と相互に排他的です。

voidedPurchaseNotification VoidedPurchaseNotification

このフィールドが存在する場合、この通知は 取り消し済みの購入に関連しており、このフィールドには 取り消し済みの購入に関する追加情報が含まれています。

このフィールドは、pendingRefundReviewNotification、oneTimeProductNotification、subscriptionNotification、testNotification と相互に排他的です。

pendingRefundReviewNotification PendingRefundReviewNotification

このフィールドが存在する場合、この通知は、解決策を提案できる チャージバック リクエストに関連しています。 この通知に応答するには、`ReviewRefund` API を呼び出します。

このフィールドは、subscriptionNotification、 oneTimeProductNotification、voidedPurchaseNotification、 and testNotification と相互に排他的です。

testNotification TestNotification

このフィールドが存在する場合、この通知は テスト公開に関連しています。これは Google Play Developer Console でのみ送信されます。

このフィールドは、 pendingRefundReviewNotification、oneTimeProductNotification、 subscriptionNotification、voidedPurchaseNotification と相互に排他的です。

SubscriptionNotification

SubscriptionNotification には次のフィールドがあります。

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
プロパティ名 説明
version 文字列 この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。
notificationType int 定期購入の notificationType には、次の値を指定できます。
  • (1)SUBSCRIPTION_RECOVERED - 定期購入が アカウントの一時停止から復帰したか、一時停止から再開された。
  • (2)SUBSCRIPTION_RENEWED - アクティブな定期購入が更新された。
  • (3)SUBSCRIPTION_CANCELED - 定期購入が自発的または非自発的にキャンセルされた。自発的なキャンセルの場合、ユーザーがキャンセルしたときに送信されます。
  • (4)SUBSCRIPTION_PURCHASED - 新しい定期購入が購入された。
  • (5)SUBSCRIPTION_ON_HOLD - 定期購入でアカウントが一時停止された(有効な場合)。
  • (6)SUBSCRIPTION_IN_GRACE_PERIOD - 定期購入が猶予期間に入った(有効な場合)。
  • (7)SUBSCRIPTION_RESTARTED - ユーザーが [Play] > [アカウント] > [定期購入] から定期購入を再開した。定期購入は解約されましたが、ユーザーが再開したとき、まだ期限切れになっていませんでした。詳細については、 再開をご覧ください。
  • (8)SUBSCRIPTION_PRICE_CHANGE_CONFIRMED(非推奨)- A 定期購入の料金変更が ユーザーによって確認された。
  • (9)SUBSCRIPTION_DEFERRED - 定期購入の契約期間が 延長された。
  • (10)SUBSCRIPTION_PAUSED - 定期購入が一時停止された。
  • (11)SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - 定期購入の一時停止スケジュールが変更された。
  • (12)SUBSCRIPTION_REVOKED - 有効期限前にユーザーが定期購入を取り消した。
  • (13)SUBSCRIPTION_EXPIRED - 定期購入が期限切れになった。
  • (17)SUBSCRIPTION_ITEMS_CHANGED - 定期購入バンドルのアイテムが変更された。
  • (18)SUBSCRIPTION_CANCELLATION_SCHEDULED - 分割払いの定期購入の解約が、契約期間の終了時に有効になるようにスケジュールされた。
  • (19)SUBSCRIPTION_PRICE_CHANGE_UPDATED - 定期購入アイテムの価格 変更の詳細が更新された。
  • (20)SUBSCRIPTION_PENDING_PURCHASE_CANCELED - 定期購入の保留中の取引 がキャンセルされた。
  • (22)SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - 定期購入の 価格引き上げの同意期間が開始されたか、ユーザーが価格 引き上げに同意した。この RTDN は、価格引き上げが必要な地域の定期購入に対してのみ送信されます。
purchaseToken 文字列 定期購入の購入時にユーザーのデバイスに提供されたトークン。

新しい定期購入の通知の例を次に示します。

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}

OneTimeProductNotification

OneTimeProductNotification には次のフィールドがあります。

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
プロパティ名 説明
version 文字列 この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。
notificationType int 通知のタイプ。以下のいずれかの値が設定されます。
  • (1)ONE_TIME_PRODUCT_PURCHASED - ユーザーが 1 回限りのアイテムを購入しました。
  • (2)ONE_TIME_PRODUCT_CANCELED - 保留中の 1 回限りのアイテムの購入がユーザーによってキャンセルされました。
purchaseToken 文字列 購入時にユーザーのデバイスに提供されたトークン。
sku 文字列 購入した 1 回限りのアイテムの ID(例: sword_001)。

新しい 1 回だけの購入の通知の例を次に示します。

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

VoidedPurchaseNotification

VoidedPurchaseNotification には次のフィールドがあります。

プロパティ名 説明

purchaseToken

string

取り消し済みの購入に関連付けられているトークン。この情報は、新規購入の際にデベロッパーに提供されます。

orderId

string

取り消された取引に関連付けられている固有のオーダー ID。1 回だけの購入の場合は、その購入に対して生成された唯一のオーダー ID を表します。自動更新による定期購入の場合は、更新処理のたびに新しいオーダー ID が生成されます。

productType

int

取り消し済みの購入の productType には以下のいずれかの値が設定されます。

  • (1)PRODUCT_TYPE_SUBSCRIPTION - 定期購入が取り消されました。
  • (2)PRODUCT_TYPE_ONE_TIME - 1 回だけの購入 が取り消されました。

refundType

int

取り消し済みの購入の refundType には以下のいずれかの値が設定されます。

  • (1)REFUND_TYPE_FULL_REFUND - 購入が完全に無効になりました。
  • (2)REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND - 複数量の購入にのみ適用される数量ベースの一部払い戻しによって、購入の一部が無効になりました。購入の一部は 複数回無効にできます。

複数量の購入の残りの合計数量が払い戻されると、refundTypeREFUND_TYPE_FULL_REFUND になります。

新しい取り消し済みの購入の通知の例を次に示します。

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

VoidedPurchaseNotification を使用する

RTDN クライアントが VoidedPurchaseNotification を受信したら、次の情報に注意してください。

  • packageName: アプリを識別します。
  • eventTimeMillis: ステータスが変更された時刻を通知します。
  • purchaseToken: 商品の購入時にユーザーのデバイスに提供されたトークン。
  • orderId: 取り消された取引に関連付けられている注文を識別します。
  • productType: 取り消された購入がアプリ内購入か定期購入かを示します。
  • refundType: 購入を取り消した払い戻しのタイプを指定します。

PendingRefundReviewNotification

PendingRefundReviewNotification は、ユーザーが購入のチャージバックをリクエストし、そのリクエストにデベロッパーによる審査が必要な場合に送信されます。この通知を受け取ったら、リクエストを評価し、払い戻しの提案と購入の使用状況の証拠を 24 時間以内に ReviewRefund API を呼び出して提供する必要があります。

PendingRefundReviewNotification には次のフィールドがあります。

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
プロパティ名 説明
version 文字列 この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。
pendingRefundToken 文字列 審査中の保留中の払い戻しリクエストを識別する一意のトークン。ReviewRefund API を呼び出すときにこのトークンを渡します。
orderId 文字列 保留中の払い戻し審査の対象となる購入のオーダー ID。
refundReason int 払い戻しリクエストの理由。保留中の審査では、払い戻しの理由として CHARGEBACK(7)のみがサポートされています。新しい理由が利用可能になったら、コードで 処理する必要があります。
obfuscatedAccountId 文字列 (該当する場合)購入時に提供された、デベロッパーが指定したユーザー アカウント ID の難読化されたもの。
obfuscatedProfileId 文字列 (該当する場合)購入時に提供された、デベロッパーが指定したプロファイル ID の難読化されたもの。

保留中の払い戻し審査通知の例を次に示します。

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "pendingRefundReviewNotification":
  {
    "version":"1.0",
    "pendingRefundToken":"example-token",
    "orderId":"GPA.1234-5678-9012-34567",
    "refundReason":7,
    "obfuscatedAccountId":"user-account-id",
    "obfuscatedProfileId":"user-profile-id"
  }
}

TestNotification

TestNotification には次のフィールドがあります。

{
  "version": string
}
プロパティ名 説明
version 文字列 この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。

テスト通知の例を次に示します。

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}