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

В этом документе перечислены и описаны типы уведомлений для разработчиков в режиме реального времени , которые вы можете получать от 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.
voidedPurchaseNotification Уведомление об аннулированной покупке Если это поле присутствует, то данное уведомление связано с аннулированной покупкой, и это поле содержит дополнительную информацию, относящуюся к аннулированной покупке. Обратите внимание, что это поле является взаимоисключающим с oneTimeProductNotification, subscriptionNotification и testNotification.
тестовое уведомление Тестовое уведомление Если это поле присутствует, значит, данное уведомление связано с тестовой публикацией. Такие уведомления отправляются только через консоль разработчика Google Play. Обратите внимание, что это поле взаимоисключающее с oneTimeProductNotification, subscriptionNotification и voidedPurchaseNotification.

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

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

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Название объекта недвижимости Ценить Описание
версия нить Версия данного уведомления. Изначально это "1.0". Эта версия отличается от других полей версии.
notificationType инт Параметр 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 - Срок действия подписки истек.
  • (17) SUBSCRIPTION_ITEMS_CHANGED - Элемент в пакете подписки был изменен.
  • (18) ОТМЕНА ПОДПИСКИ ЗАПЛАНИРОВАНА - Отмена подписки в рассрочку запланирована на конец периода действия обязательства.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED - Обновлены сведения об изменении цены товара по подписке.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - Ожидающая транзакция подписки была отменена.
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - Начался период согласия на повышение цены подписки или пользователь дал согласие на повышение цены. Этот RTDN отправляется только для подписок в регионе, где требуется повышение цены.
purchaseToken нить Токен, предоставленный устройству пользователя при покупке подписки.

Пример

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

{
  "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". Эта версия отличается от других полей версии.
notificationType инт Тип уведомления. Он может принимать следующие значения:
  • (1) ОДНОРАЗОВАЯ ПОКУПКА ТОВАРА - Пользователь успешно приобрел товар один раз.
  • (2) ONE_TIME_PRODUCT_CANCELED - Пользователь отменил ожидающую разовую покупку товара.
purchaseToken нить Токен, предоставленный устройству пользователя при совершении покупки.
артикул нить Идентификатор приобретенного одноразового продукта (например, "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
  }
}

Потребление VoidedPurchaseNotification

Когда ваш RTDN-клиент получает уведомление VoidedPurchaseNotification , обратите внимание на следующую информацию:

  • packageName : Идентифицирует приложение.
  • eventTimeMillis : Указывает время изменения статуса.
  • purchaseToken : Токен, предоставленный устройству пользователя при покупке продукта.
  • orderId : Идентифицирует заказ, связанный с аннулированной транзакцией.
  • productType : Указывает, была ли аннулированная покупка покупкой внутри приложения или подпиской.
  • refundType : Указывает тип возврата средств, аннулировавшего покупку.

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

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

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

Пример

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

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