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

В этом документе перечислены и описаны типы уведомлений разработчиков в режиме реального времени, которые вы можете получать от 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». Эта версия отличается от других полей версии.
packageName нить Имя пакета приложения, к которому относится это уведомление (например, `com.some.thing`).
eventTimeMillis длинный Метка времени, когда произошло событие, в миллисекундах с начала эпохи.
подпискаУведомление Уведомление о подписке Если это поле присутствует, то уведомление связано с подпиской, и оно содержит дополнительную информацию, связанную с подпиской. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, voidedPurchaseNotification и testNotification.
oneTimeProductNotification OneTimeProductNotification Если это поле присутствует, то уведомление относится к разовой покупке, и оно содержит дополнительную информацию, связанную с покупкой. Обратите внимание, что это поле является взаимоисключающим с subscriptionNotification, voidedPurchaseNotification и testNotification.
Уведомление о недействительной покупке Уведомление об аннулировании покупки Если это поле присутствует, то уведомление связано с аннулированной покупкой, и оно содержит дополнительную информацию, связанную с аннулированной покупкой. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, subscriptionNotification и testNotification.
testNotification TestNotification Если это поле присутствует, то уведомление связано с тестовой публикацией. Такие уведомления отправляются только через консоль разработчика Google Play. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, subscriptionNotification и voidedPurchaseNotification.

Уведомление о подписке

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

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Имя объекта недвижимости Ценить Описание
версия нить Версия этого уведомления. Изначально это «1.0». Эта версия отличается от других полей версии.
Тип уведомления инт Тип уведомления для подписки может иметь следующие значения:
  • (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 — Ожидаемая транзакция подписки была отменена.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED — обновляются сведения об изменении цены элемента подписки.
покупкаТокена нить Токен, предоставленный устройству пользователя при покупке подписки.

Пример

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

{
  "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
}
Имя объекта Ценить Описание
версия нить Версия этого уведомления. Изначально это будет «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 : Указывает тип возврата, который аннулировал покупку.

TestNotification

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

{
  "version": string
}
Имя объекта недвижимости Ценить Описание
версия нить Версия этого уведомления. Изначально это «1.0». Эта версия отличается от других полей версии.

Пример

Вот пример тестового уведомления:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}