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

このトピックでは、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,
  "testNotification": TestNotification
}

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

プロパティ名 説明
version string この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。
packageName string この通知に関連するアプリのパッケージ名(例: com.some.thing)。
eventTimeMillis long イベント発生時のタイムスタンプ(エポックからのミリ秒数)。
subscriptionNotification SubscriptionNotification このフィールドが存在する場合、この通知は定期購入に関連しており、フィールドには定期購入に関連する追加情報が含まれます。このフィールドは、oneTimeProductNotification、voidedPurchaseNotification、testNotification と相互に排他的です。
oneTimeProductNotification OneTimeProductNotification このフィールドが存在する場合、この通知は 1 回だけの購入に関連しており、フィールドには購入に関する追加情報が含まれます。このフィールドは、subscriptionNotification、voidedPurchaseNotification、testNotification と相互に排他的です。
voidedPurchaseNotification VoidedPurchaseNotification このフィールドが存在する場合、この通知は取り消し済みの購入に関連しており、フィールドには取り消し済みの購入に関連する追加情報が含まれます。このフィールドは、oneTimeProductNotification、subscriptionNotification、testNotification と相互に排他的です。
testNotification TestNotification このフィールドが存在する場合、この通知はテスト公開に関連しています。これは Google Play Console でのみ送信されます。このフィールドは、oneTimeProductNotification、subscriptionNotification、voidedPurchaseNotification と相互に排他的です。

SubscriptionNotification

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

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "subscriptionId": string
}
プロパティ名 説明
version string この通知のバージョン。最初は「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 - 定期購入の料金変更がユーザーによって確認された。
  • (9)SUBSCRIPTION_DEFERRED - 定期購入の契約期間が延長された。
  • (10)SUBSCRIPTION_PAUSED - 定期購入が一時停止された。
  • (11)SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - 定期購入の一時停止スケジュールが変更された。
  • (12)SUBSCRIPTION_REVOKED - 有効期限前にユーザーが定期購入を取り消した。
  • (13)SUBSCRIPTION_EXPIRED - 定期購入が期限切れになった。
purchaseToken string 定期購入の購入時にユーザーのデバイスに提供されたトークン。
subscriptionId string 購入された定期購入のアイテム ID(例: monthly001)。

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

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

OneTimeProductNotification

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

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

利用資格の調整に必要なことが適切な購入と注文を見つけることだけであれば、この時点で必要な情報はすべて揃います。取り消し済みの購入に関する追加情報を取得する方法については、Google Play Voided Purchases API を参照してください。これは、特定のタイムスタンプの間に取り消された購入の追加データを提供するプルモデルです。

複数数量の購入が部分的に取り消された場合、purchases.productsrefundableQuantity フィールドに、取り消しされていない残りの購入商品数が含まれます。

TestNotification

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

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

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

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