このドキュメントでは、 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 には、次の値を指定できます。
|
| 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 | 通知のタイプ。以下のいずれかの値が設定されます。
|
| 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: 購入を取り消した払い戻しのタイプを指定します。
PendingRefundReviewNotification
PendingRefundReviewNotification は、ユーザーが購入のチャージバックをリクエストし、そのリクエストにデベロッパーによる審査が必要な場合に送信されます。この通知を受け取ったら、リクエストを評価し、払い戻しの提案と購入の使用状況の証拠を 24 時間以内に
ReviewRefund API を呼び出して提供する必要があります。
CHARGEBACK のみがサポートされています。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"
}
}