Перейти к основному содержимому

Структура уведомления

На этой странице описана структура уведомления об изменении статуса платежа и тестового уведомления. Оба они отправляются в формате POST-запроса со следующими атрибутами:

АтрибутТипОписаниеОбязательностьРасположениеПример
idStringID уведомленияДаbody12345
timestampStringВремя отправки уведомленияДаbody2025-11-18T10:38:58.619Z
payloadStringСтрока данных в Base64, зашифрованная с помощью алгоритма AES-256ДаbodyN/A

HTTP-заголовок запроса

ЗаголовокЗначениеОбязательность
Content-Typeapplication/jsonДа

payload

АтрибутТипОписаниеОбязательностьРасположениеПример
notification_typeString
  • INVOICE_STATUS — уведомление об изменении статуса реального платежа
  • INVOICE_STATUS_SANDBOX — уведомление об изменении статуса тестового платежа
  • TEST_EVENT — уведомление для проверки соединения в реальном окружении
  • TEST_EVENT_SANDBOX — уведомление для проверки соединения в тестовом окружении
  • SUBSCRIPTION_EVENT — уведомление о подписке
ДаbodyINVOICE_STATUS
app_idNumberID приложения, в котором совершена покупкаДаbody12345
dataString

Блок данных, структура которого зависит от notification_type:

  • data при INVOICE_STATUS и INVOICE_STATUS_SANDBOX
  • data при TEST_EVENT и TEST_EVENT_SANDBOX
  • data при SUBSCRIPTION_EVENT
ДаbodyN/A

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

АтрибутТипОписаниеОбязательностьРасположениеПример
product_codeStringКод оплаченного продукта, указывается в RuStore Консоль при создании продуктаДаpayload.datatest_test
change_status_timeStringВремя изменения статуса платежа.Даpayload.data1970-01-01T00:00:00Z
status_newString

Новый статус платежа. Доступные значения:

  • EXECUTED - запущен процесс оплаты;
  • CONFIRMED — финальный статус успешного платежа, денежные средства списаны с покупателя;
  • CANCELLED - отменён пользователем до запуска оплаты;
  • REJECTED - отказ при платеже (недостаточно средств, невалидный CVC или другие причины);
  • EXPIRED - истекло время на оплату;
  • PAID - для покупки потребляемых товаров, средства успешно захолдированы, покупка ожидает подтверждения со стороны разработчика;
  • REVERSED - для покупки потребляемых товаров: не поступило запроса на подтверждение холда, холд отменён, деньги возвращены покупателю;
  • REFUNDED - средства по счёту возвращены покупателю.
  • REFUNDING - инициирован возврат, запрос отправлен в эквайер.
Даpayload.datapaid
status_oldString

Предыдущий статус платежа. Доступные значения:

  • CREATED - создан;
  • EXECUTED - запущен процесс оплаты;
  • CONFIRMED — финальный статус успешного платежа, денежные средства списаны с покупателя;
  • CANCELLED - отменён пользователем до запуска оплаты;
  • REJECTED - отказ при платеже (недостаточно средств, невалидный CVC или другие причины);
  • EXPIRED - истекло время на оплату;
  • PAID - для покупки потребляемых товаров, средства успешно захолдированы, покупка ожидает подтверждения со стороны разработчика;
  • REVERSED - для покупки потребляемых товаров: не поступило запроса на подтверждение холда, холд отменён, деньги возвращены покупателю;
  • REFUNDED - средства по счёту возвращены покупателю.
  • REFUNDING - инициирован возврат, запрос отправлен в эквайер.
Даpayload.dataexecuted
purchase_tokenStringТокен покупки. Вы можете использовать его для получения информации о платеже через RuStore APIДаpayload.data111.123
invoice_idStringУникальный номер счёта на оплату в RuStoreДаpayload.data123
order_idStringУникальный номер заказа в системе приложения разработчика. Может указываться при инициации заказа в приложении, либо присваиваться автоматически платёжным провайдеромДаpayload.data123e4567e89b-12d3-a456-4266-55440000
purchase_idStringУникальный идентификатор покупкиДаpayload.data123e4567e89b-12d3-a456-4266-55440000
developer_payloadStringДополнительная информация о заказе, переданная разработчиком при покупке продукта. Возвращается для платежей, совершенных через Pay SDKНетpayload.dataAny data from developer

data уведомления для проверки соединения в тестовом или реальном окружении

АтрибутТипОписаниеРасположениеПример
testStringТестовая строкаpayload.dataTEST

data уведомления о событии подписки

АтрибутТипОписаниеОбязательностьРасположениеПример заполнения
product_codestringКод продукта (указывается в консоли при создании продукта), который был оплаченДаbody.subscription_dataone_more_scan
event_timestringВремя возникновения соответствующего события.Даbody.subscription_data2025-11-18T10:38:58.619Z
subscription_event_typestring

Тип события по подписке:

ACTIVATED — подписка активирована (первый платеж успешный)
RENEWED — подписка продлена (рекуррентный платеж успешный)
CANCELLED — пользователь/разработчик отключил автопродление по подписке
RESUMED — пользователь включил автопродление (после отключения ранее)
PAYMENT_FAILED — попытка списания завершилась неуспешно, но подписка не закрылась и перешла в GRACE/HOLD период
CLOSED — подписка закрыта - из-за отключения автопродления или проблем с оплатой

Даbody.subscription_dataACTIVATED
status_newstring

Новый статус подписки. Доступные значения:

ACTIVE — подписка активна
PAUSED — подписка приостановлена (HOLD-период)
CLOSED — подписка закрыта — после отключения автопродления пользователем/разработчиком
TERMINATED — подписка закрыта из-за проблем с оплатой

Информация о статусах подписки доступна в диаграмме статусной модели.

Даbody.subscription_dataCLOSED может совпадать со status_old, например, при событии RENEWED, когда статус не меняется
status_oldstringСтарый статус подписки. Список статусов аналогичен status_new.Нет. Может быть пустым, если это первое событие активации подпискиbody.subscription_dataACTIVE
period_oldstring

Период подписки. Доступные значения:

TRIAL — бесплатный период использования подписки
PROMO — промо-период по сниженной относительно основной цене
MAIN — основной период использования подписки
GRACE — льготный период: у пользователя возникла проблема с оплатой, но подписка считается активной в течение указанного периода; продолжаются попытки списать средства с пользователя
HOLD — проблемы с оплатой. Доступ к контенту по подписке закрыт, но сама подписка ещё не закрылась, продолжаются попытки списать средства с пользователя в течение указанного периода

Для информации о периодах подписки обратитесь к разделу «Детали Подписки»

Нет. Может быть пустым, если это первое событие активации подпискиbody.subscription_dataMAIN
period_newstringНовый период подписки. Список доступных значений аналогичен представленному в period_oldДаbody.subscription_dataMAIN
autorenewingbooleanСтатус автопродления подписки: TRUE — автопродление включено, FALSE — автопродление выключеноДаbody.subscription_dataTRUE
invoice_idstringУникальный номер счета на оплату в системе RuStore.Нет. Может отсутствовать, например, для события CANCEL/RESUMEbody.subscription_data123
order_idstringУникальный номер заказа в системе приложения разработчика. Может задаваться при инициации заказа в anyApp, либо присваиваться автоматически платежным провайдером.Даbody.subscription_data123e4567e89b-12d3-a456-4266-55440000
purchase_idstringУникальный номер покупкиДаbody.subscription_data123e4567e89b-12d3-a456-4266-55440000
developer_payloadstringДополнительная информация о заказе, переданная разработчиком при покупке продуктаНетbody.subscription_dataAny data from developer

Примеры payload

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

{
"app_id": 12345,
"notification_type": "INVOICE_STATUS",
"data": "{\"change_status_time\":\"1970-01-01T00:00:00Z\",\"product_code\":\"test_test\",\"status_new\":\"paid\",\"status_old\":\"executed\",\"purchase_token\":\"111.123\",\"invoice_id\":\"123\",\"order_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"purchase_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"developer_payload\":\"Any data from developer\"}"
}

payload уведомления для проверки соединения в тестовом или реальном окружении

{
"app_id": 12345,
"notification_type": "TEST_EVENT",
"data": "{\"test\":\"TEST\"}"
}

payload уведомления об изменении статуса подписки

{
"app_id": 12345,
"notification_type": "SUBSCRIPTION_EVENT",
"data": "{\"product_code\":\"one_more_scan\",\"event_time\":\"2025-11-18T10:38:58.619Z\",\"subscription_event_type\":\"ACTIVATED\",\"status_new\":\"ACTIVE\",\"status_old\":\"\",\"period_old\":\"\",\"period_new\":\"MAIN\",\"autorenewing\":true,\"invoice_id\":\"123\",\"order_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"purchase_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"developer_payload\":\"Any data from developer\"}"
}