本文列出並說明您可從 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
}
| 屬性名稱 | 值 | 說明 | 
| version | string | 這則通知的版本。一開始會是「1.0」。此版本與其他版本欄位不同。 | 
| notificationType | int | 訂閱項目的 notificationType 可能具有下列值: 
 | 
| purchaseToken | string | 購買訂閱項目時提供給使用者裝置的權杖。 | 
範例
以下是新的訂閱項目購買交易的通知範例:
{
  "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 | 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:指定導致交易作廢的退款類型。
TestNotification
TestNotification 包含下列欄位:
{
  "version": string
}
| 屬性名稱 | 值 | 說明 | 
| version | string | 這則通知的版本。一開始會是「1.0」。此版本與其他版本欄位不同。 | 
範例
以下是測試通知範例:
{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}
