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

В этой теме перечислены и описаны типы уведомлений разработчиков в режиме реального времени, которые вы можете получать от 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`).
событиеTimeMillis длинный Временная метка, когда произошло событие, в миллисекундах с начала эпохи.
подпискаУведомление ПодпискаУведомление Если это поле присутствует, то это уведомление связано с подпиской, и это поле содержит дополнительную информацию, связанную с подпиской. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, voidedPurchaseNotification и testNotification.
oneTimeProductNotification OneTimeProductNotification Если это поле присутствует, то это уведомление связано с одноразовой покупкой, и это поле содержит дополнительную информацию, связанную с покупкой. Обратите внимание, что это поле является взаимоисключающим с subscriptionNotification, voidedPurchaseNotification и testNotification.
аннулированоУведомление о покупке Уведомление о недействительной покупке Если это поле присутствует, то это уведомление связано с аннулированной покупкой, и это поле содержит дополнительную информацию, связанную с аннулированной покупкой. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, subscriptionNotification и testNotification.
testNotification Тестовое уведомление Если это поле присутствует, то это уведомление связано с тестовой публикацией. Они отправляются только через Google Play Developer Console. Обратите внимание, что это поле является взаимоисключающим с 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 > Account > Subscriptions . Подписка была отменена, но срок ее действия еще не истек, когда пользователь восстановил ее. Для получения дополнительной информации см. Restorations .
  • (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 : здесь указывается тип возврата, который аннулировал покупку.

Если все, что вам нужно сделать для корректировки прав, это найти нужную покупку и заказ, то на этом этапе у вас есть вся необходимая информация. Чтобы узнать, как получить дополнительную информацию об аннулированной покупке, ознакомьтесь с API аннулированных покупок Google Play , который представляет собой модель pull, которая предоставляет дополнительные данные об аннулированных покупках между заданной временной меткой.

Для частично аннулированных покупок с несколькими суммами поле refundableQuantity , предоставленное purchases.products , содержит оставшееся количество приобретенных товаров, которые не были аннулированы.

Тестовое уведомление

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

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

Пример

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

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