Справочное руководство по уведомлениям разработчиков в режиме реального времени

В этой теме перечислены и описаны типы уведомлений для разработчиков в режиме реального времени , которые вы можете получать от 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 для подписки может иметь следующие значения:
  • (1) SUBSCRIPTION_RECOVERED — подписка была восстановлена ​​после блокировки учетной записи.
  • (2) SUBSCRIPTION_RENEWED — активная подписка продлена.
  • (3) SUBSCRIPTION_CANCELED — подписка была добровольно или принудительно отменена. Для добровольной отмены отправляется, когда пользователь отменяет подписку.
  • (4) SUBSCRIPTION_PURCHASED — приобретена новая подписка.
  • (5) SUBSCRIPTION_ON_HOLD — подписка заблокирована (если включена).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD — для подписки вступил льготный период (если он включен).
  • (7) SUBSCRIPTION_RESTARTED — пользователь восстановил свою подписку в меню «Play» > «Аккаунт» > «Подписки» . Подписка была отменена, но срок ее действия еще не истек на момент восстановления пользователя. Дополнительную информацию см. в разделе Реставрации .
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED — изменение цены подписки успешно подтверждено пользователем.
  • (9) SUBSCRIPTION_DEFERRED — время повторения подписки было продлено.
  • (10) SUBSCRIPTION_PAUSED — подписка приостановлена.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED — график приостановки подписки был изменен.
  • (12) SUBSCRIPTION_REVOKED — подписка была отозвана у пользователя до истечения срока ее действия.
  • (13) SUBSCRIPTION_EXPIRED — срок действия подписки истек.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED — ожидающая транзакция подписки отменена.
покупкаТокен нить Токен, предоставленный устройству пользователя при покупке подписки.
идентификатор подписки нить Идентификатор продукта приобретенной подписки (например, «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». Эта версия отличается от других полей версии.
тип уведомления интервал Тип уведомления. Он может иметь следующие значения:
  • (1) ONE_TIME_PRODUCT_PURCHASED — пользователь успешно приобрел одноразовый продукт.
  • (2) ONE_TIME_PRODUCT_CANCELED — ожидающая разовая покупка продукта была отменена пользователем.
покупкаТокен нить Токен, предоставленный устройству пользователя при совершении покупки.
артикул нить Идентификатор приобретенного единоразового продукта (например, «sword_001»)

Пример

Вот пример уведомления о новой разовой покупке:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

Уведомление об аннулировании покупки

VoidedPurchaseNotification содержит следующие поля:

Имя свойства

Ценить

Описание

purchaseToken

string

Токен, связанный с аннулированной покупкой. Эта информация предоставляется разработчику при совершении новой покупки.

orderId

string

Уникальный идентификатор заказа, связанный с аннулированной транзакцией. Для единоразовых покупок это единственный идентификатор заказа, созданный для покупки. Для автоматически возобновляемых подписок новый идентификатор заказа создается для каждой транзакции продления.

productType

int

productType для аннулированной покупки может иметь следующие значения:

  • (1) PRODUCT_TYPE_SUBSCRIPTION — покупка подписки аннулирована.
  • (2) PRODUCT_TYPE_ONE_TIME – разовая покупка аннулирована.

refundType

int

refundType для аннулированной покупки может иметь следующие значения:

  • (1) REFUND_TYPE_FULL_REFUND — покупка полностью аннулирована.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND — покупка была частично аннулирована в результате частичного возмещения на основе количества, применимого только к покупкам в нескольких количествах. Покупка может быть частично аннулирована несколько раз.

Обратите внимание, что при возврате оставшегося общего количества покупки в нескольких количествах refundType будет REFUND_TYPE_FULL_REFUND .

Пример

Вот пример уведомления о новой аннулированной покупке:

{
  "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"
  }
}