В этой теме перечислены и описаны типы уведомлений для разработчиков в режиме реального времени , которые вы можете получать от 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
}
Эти поля описаны в следующей таблице.
Имя свойства | Ценить | Описание |
версия | нить | Версия этого уведомления. Изначально это «1.0». Эта версия отличается от других полей версии. |
имя пакета | нить | Имя пакета приложения, к которому относится это уведомление (например, «com.some.thing»). |
событиеВремяМиллис | длинный | Временная метка, когда произошло событие, в миллисекундах с начала Эпохи. |
подпискаУведомление | Уведомление о подписке | Если это поле присутствует, то это уведомление связано с подпиской, и это поле содержит дополнительную информацию, связанную с подпиской. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, voidedPurchaseNotification и testNotification. |
одноразовое уведомление о продукте | Одноразовое уведомление о продукте | Если это поле присутствует, то это уведомление относится к разовой покупке, и это поле содержит дополнительную информацию, связанную с покупкой. Обратите внимание, что это поле является взаимоисключающим с подпискойNotification, voidedPurchaseNotification и testNotification. |
аннулированоУведомление о покупке | Уведомление об аннулировании покупки | Если это поле присутствует, то это уведомление связано с аннулированной покупкой, и это поле содержит дополнительную информацию, связанную с аннулированной покупкой. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, subscribeNotification и testNotification. |
тестовое уведомление | Тестовое уведомление | Если это поле присутствует, то это уведомление связано с тестовой публикацией. Они отправляются только через консоль разработчика Google Play. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, subscribeNotification и voidedPurchaseNotification. |
Уведомление о подписке
SubscriptionNotification
содержит следующие поля:
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"subscriptionId": string
}
Имя свойства | Ценить | Описание |
версия | нить | Версия этого уведомления. Изначально это «1.0». Эта версия отличается от других полей версии. |
тип уведомления | интервал | NotificationType для подписки может иметь следующие значения:
|
покупкаТокен | нить | Токен, предоставленный устройству пользователя при покупке подписки. |
идентификатор подписки | нить | Идентификатор продукта приобретенной подписки (например, «monthly001»). |
Пример
Вот пример уведомления о покупке новой подписки:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"subscriptionNotification":
{
"version":"1.0",
"notificationType":4,
"purchaseToken":"PURCHASE_TOKEN",
"subscriptionId":"monthly001"
}
}
Одноразовое уведомление о продукте
OneTimeProductNotification
содержит следующие поля:
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"sku": string
}
Имя свойства | Ценить | Описание |
версия | нить | Версия этого уведомления. Первоначально это будет «1.0». Эта версия отличается от других полей версии. |
тип уведомления | интервал | Тип уведомления. Он может иметь следующие значения:
|
покупкаТокен | нить | Токен, предоставленный устройству пользователя при совершении покупки. |
артикул | нить | Идентификатор приобретенного единоразового продукта (например, «sword_001») |
Пример
Вот пример уведомления о новой разовой покупке:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"oneTimeProductNotification":
{
"version":"1.0",
"notificationType":1,
"purchaseToken":"PURCHASE_TOKEN",
"sku":"my.sku"
}
}
Уведомление об аннулировании покупки
VoidedPurchaseNotification
содержит следующие поля:
Имя свойства | Ценить | Описание |
| | Токен, связанный с аннулированной покупкой. Эта информация предоставляется разработчику при совершении новой покупки. |
| | Уникальный идентификатор заказа, связанный с аннулированной транзакцией. Для единоразовых покупок это единственный идентификатор заказа, созданный для покупки. Для автоматически возобновляемых подписок новый идентификатор заказа создается для каждой транзакции продления. |
| |
|
| |
Обратите внимание, что при возврате оставшегося общего количества покупки в нескольких количествах |
Пример
Вот пример уведомления о новой аннулированной покупке:
{
"version":"1.0",
"packageName":"com.some.app",
"eventTimeMillis":"1503349566168",
"voidedPurchaseNotification":
{
"purchaseToken":"PURCHASE_TOKEN",
"orderId":"GS.0000-0000-0000",
"productType":1
"refundType":1
}
}
Использование уведомления о аннулировании покупки
Когда ваш клиент RTDN получает VoidedPurchaseNotification
, обратите внимание на следующую информацию:
-
packageName
: идентифицирует приложение. -
eventTimeMillis
: информирует разработчика о времени, когда произошло изменение статуса. -
purchaseToken
: токен, предоставленный устройству пользователя при покупке продукта. -
orderId
: идентифицирует заказ, связанный с аннулированной транзакцией. -
productType
: сообщает, была ли аннулированная покупка покупкой в приложении или подпиской. -
refundType
: указывает тип возврата, при котором покупка была аннулирована.
Если все, что вам нужно сделать для корректировки прав, — это найти нужную покупку и заказ, то на этом этапе у вас есть вся необходимая информация. Чтобы узнать, как получить дополнительную информацию об аннулированной покупке, ознакомьтесь с API аннулированных покупок Google Play , который представляет собой модель извлечения, предоставляющую дополнительные данные для аннулированных покупок между заданной отметкой времени.
Для частично аннулированных покупок нескольких количеств поле refundableQuantity
, предоставленное в purchases.products
содержит оставшееся количество купленных продуктов, которые не были аннулированы.
Тестовое уведомление
TestNotification
содержит следующие поля:
{
"version": string
}
Имя свойства | Ценить | Описание |
версия | нить | Версия этого уведомления. Изначально это «1.0». Эта версия отличается от других полей версии. |
Пример
Вот пример тестового уведомления:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}