このトピックでは、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 | 文字列 | この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。 |
packageName | 文字列 | この通知に関連するアプリのパッケージ名(例: 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 | 文字列 | この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。 |
notificationType | int | 定期購入の notificationType には、次の値を指定できます。
|
purchaseToken | 文字列 | 定期購入の購入時にユーザーのデバイスに提供されたトークン。 |
subscriptionId | 文字列 | 購入された定期購入のアイテム 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 | 文字列 | この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。 |
notificationType | int | 通知のタイプ。以下のいずれかの値が設定されます。
|
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
には次のフィールドがあります。
プロパティ名 |
値 |
説明 |
|
|
取り消し済みの購入に関連付けられているトークン。この情報は、新規購入の際にデベロッパーに提供されます。 |
|
|
取り消された取引に関連付けられている固有のオーダー ID。1 回だけの購入の場合は、その購入に対して生成された唯一のオーダー ID を表します。自動更新による定期購入の場合は、更新処理のたびに新しいオーダー ID が生成されます。 |
|
|
取り消し済みの購入の
|
|
|
取り消し済みの購入の
複数数量の購入の残り合計数量が
払い戻された場合、 |
例
新しい取り消し済みの購入の通知の例を次に示します。
{
"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 を参照してください。これは、特定のタイムスタンプの間に取り消された購入の追加データを提供するプルモデルです。
一部取り消し済みの複数数量の購入の場合、refundableQuantity
フィールド
purchases.products
によって提供される情報には、
取り消されていない購入商品の数。
TestNotification
TestNotification
には次のフィールドがあります。
{
"version": string
}
プロパティ名 | 値 | 説明 |
version | 文字列 | この通知のバージョン。最初は「1.0」に設定されます。このバージョンは他のバージョン フィールドとは異なります。 |
例
テスト通知の例を次に示します。
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}