本主题列出并描述了您可以从 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 | 字符串 | 此通知的版本。最初,此版本为“1.0”。此版本与其他版本字段不同。 |
packageName | 字符串 | 此通知相关的应用的包名称(例如,`com.some.thing`)。 |
eventTimeMillis | 长整型 | 事件发生的时间戳,以自纪元以来的毫秒数表示。 |
subscriptionNotification | SubscriptionNotification | 如果此字段存在,则此通知与订阅相关,并且此字段包含与订阅相关的其他信息。请注意,此字段与 oneTimeProductNotification、voidedPurchaseNotification 和 testNotification 互斥。 |
oneTimeProductNotification | OneTimeProductNotification | 如果此字段存在,则此通知与一次性购买相关,并且此字段包含与购买相关的其他信息。请注意,此字段与 subscriptionNotification、voidedPurchaseNotification 和 testNotification 互斥。 |
voidedPurchaseNotification | VoidedPurchaseNotification | 如果此字段存在,则此通知与已作废的购买相关,并且此字段包含与已作废的购买相关的其他信息。请注意,此字段与 oneTimeProductNotification、subscriptionNotification 和 testNotification 互斥。 |
testNotification | TestNotification | 如果此字段存在,则此通知与测试发布相关。这些仅通过 Google Play 开发者控制台发送。请注意,此字段与 oneTimeProductNotification、subscriptionNotification 和 voidedPurchaseNotification 互斥。 |
SubscriptionNotification
A SubscriptionNotification
包含以下字段
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"subscriptionId": string
}
属性名称 | 值 | 描述 |
version | 字符串 | 此通知的版本。最初,此版本为“1.0”。此版本与其他版本字段不同。 |
notificationType | 整型 | 订阅的 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 | 整型 | 通知的类型。它可以具有以下值
|
purchaseToken | 字符串 | 购买时提供给用户设备的令牌。 |
sku | 字符串 | 已购买的一次性产品 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 已作废购买 API,这是一个拉取模型,可在给定时间戳之间为已作废购买提供其他数据。
对于部分作废的多数量购买,purchases.products
提供的refundableQuantity
字段包含尚未作废的已购买产品的剩余数量。
TestNotification
一个TestNotification
包含以下字段
{
"version": string
}
属性名称 | 值 | 描述 |
version | 字符串 | 此通知的版本。最初,此版本为“1.0”。此版本与其他版本字段不同。 |
示例
以下是一个测试通知的示例
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}