本主題列出並描述您可從 Google Play 收到的即時開發人員通知類型。
編碼
每次發布至 Cloud Pub/Sub 主題的發布內容都會包含一個 Base64 編碼的資料欄位。
{
"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 | 事件發生時的時間戳記 (以從 Epoch 紀元時間算起的毫秒數表示)。 |
subscriptionNotification | SubscriptionNotification | 如有這個欄位,這則通知便與訂閱相關,且本欄位包含有關訂閱的其他資訊。請注意,此欄位與 oneTimeProductNotification、voidedPurchaseNotification 和 testNotification 互斥。 |
oneTimeProductNotification | OneTimeProductNotification | 如果有這個欄位,這則通知便與一次性消費相關,且本欄位包含有關該筆消費的其他資訊。請注意,此欄位與 subscriptionNotification、voidedPurchaseNotification 和 testNotification 互斥。 |
voidedPurchaseNotification | VoidedPurchaseNotification | 如果有這個欄位,這則通知便與作廢的交易相關,且本欄位包含有關該筆交易的其他資訊。請注意,此欄位與 oneTimeProductNotification、subscriptionNotification 和 testNotification 互斥。 |
testNotification | TestNotification | 如果有這個欄位,則這則通知與測試發布相關。這些內容只會透過 Google Play 管理中心傳送。請注意,此欄位與 oneTimeProductNotification、subscriptionNotification 和 voidedPurchaseNotification 互斥。 |
SubscriptionNotification
SubscriptionNotification
包含下列欄位:
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"subscriptionId": string
}
屬性名稱 | 值 | 說明 |
version | string | 這則通知的版本。一開始會是「1.0」。此版本與其他版本欄位不同。 |
notificationType | int | 訂閱項目的 notificationType 可能具有下列值:
|
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 | 通知類型,可能具有下列值:
|
purchaseToken | string | 購買產品時提供給使用者裝置的權杖。 |
sku | string | 所購買一次性產品的 ID (例如「sword_001」) |
範例
如有新的一次性消費時,通知內容如下所示:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"oneTimeProductNotification":
{
"version":"1.0",
"notificationType":1,
"purchaseToken":"PURCHASE_TOKEN",
"sku":"my.sku"
}
}
VoidedPurchaseNotification
VoidedPurchaseNotification
包含下列欄位:
屬性名稱 |
值 |
說明 |
|
|
與消費相關聯的權杖已經作廢。如有新的交易,系統會將這項資訊提供給開發人員。 |
|
|
與作廢交易相關聯的專屬訂單 ID。如為一次性消費,這會是該次交易產生的唯一訂單 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 | string | 這則通知的版本。一開始會是「1.0」。此版本與其他版本欄位不同。 |
範例
以下是測試通知範例:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}