# Работа с оповещениями {#ru_platform_callbacks .concept} статья о работе с программными оповещениями, позволяющими максимально оперативно получать значимую информацию о проведении каждого платежа, с описанием типов оповещений и используемых в них структур данных **На уровень выше:**[Работа с информацией о платежах](ru_platform_payment_information.md) ## Обзор {#ru_callbacks_overview} ### Введение {#section_agk_xs2_ytb .section} *Оповещение* — это техническое сообщение, отправляемое от платёжной платформы Ecommpay к веб-сервису мерчанта и содержащее информацию об определённом событии в платёжной платформе, как правило связанном с проведением платежаили хранением платёжных данных пользователя. Оповещения позволяют своевременно получать информацию о различных событиях, при этом состав и условия отправки оповещений можно гибко конфигурировать, определяя что именно, в каких случаях, в каком виде и куда отправлять. В этой статье представлена информация об оповещениях, а также о порядке и особенностях работы с ними. ### Виды оповещений {#section_uk5_ys2_ytb .section} Оповещения можно условно разделить на *предписывающие*, требующие каких-либо действий со стороны веб-сервиса, и *уведомительные*, содержащие информацию к сведению. Предписывающие оповещения направляются в случаях, когда требуется отправить какие-либо сведения в платёжную платформу, предоставить определённую информацию пользователю, перенаправить его к сторонним сервисам или выполнить иные действия. Такие оповещения всегда содержат только промежуточную информацию о платежах и от их получения нельзя отказаться, поскольку своевременное реагирование на эти оповещения необходимо для корректного проведения платежей. Уведомительные оповещения направляются в случаях, когда можно принять и использовать определённую информацию, например об изменении статуса платежаили о формировании токена карты. Такие оповещения могут содержать промежуточную или итоговую информацию о платежах и от их получения можно отказываться \(выборочно или полностью\). **Прим.:** Отказ от получения уведомительных оповещений никак не влияет на возможность получения информации о платежах другими способами, в том числе с помощью запросов черезGate API \([подробнее](ru_Gate_payment_status_request.md#)\) и Data API \([подробнее](ru_dbl_using_api.md#)\), а также с помощью интерфейса Dashboard. Вместе с тем, оповещения являются наиболее оперативным и надёжным способом получения информации \(с подтверждением её доставки\), и отказываться от их получения следует только в обоснованных случаях, когда это соответствует специфике работы веб-сервиса. ### Типовые случаи применения {#section_hq2_zs2_ytb .section} К типовым случаям применения оповещений можно отнести следующие. - *Изменение статуса платежа.* Это могут быть оповещения как с промежуточной, так и с итоговой информацией о проведении платежа. ```language-json { "project_id": 42, "customer": { "id": "17008" }, "payment": { "id": "6789101", "type": "purchase", "status": "awaiting capture", // промежуточный статус платежа "date": "2022-01-11T13:00:40+0000", "method": "card", "sum": { "amount": 200000, "currency": "USD" }, "description": "" }, "account": { "number": "431422******0056", "type": "visa", "card_holder": "SONYA KOVALEVSKY", "expiry_month": "05", "expiry_year": "2025" }, "operation": { "id": 77000002, "type": "auth", "status": "success", "date": "2022-01-11T13:00:40+0000", "created_date": "2022-01-11T13:00:37+0000", "request_id": "e2fd233d27c064fbe01af291039e6478341a0489-3...9", "sum_initial": { "amount": 200000, "currency": "USD" }, "sum_converted": { "amount": 200000, "currency": "USD" }, "provider": { "id": 120, "payment_id": "224750650", "date": "2022-01-11T13:00:39+0000", "result_code": "000", "result_message": "Approved", "auth_code": "505050", "endpoint_id": 120 }, "code": "0", "message": "Success", "description": "SUCCESS", "eci": "00" }, "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm..." } ``` ```language-json { "project_id": 42, "payment": { "id": "6789102", "type": "purchase", "status": "success", // итоговый статус платежа "date": "2022-01-11T15:54:40+0000", "method": "card", "sum": { "amount": 200000, "currency": "EUR" }, "description": "" }, "account": { "number": "431422******0056", "type": "visa", "card_holder": "SONYA KOVALEVSKY", "expiry_month": "05", "expiry_year": "2025" }, "customer": { "id": "17008" }, "operation": { "id": 7178000006597, "type": "capture", "status": "success", "date": "2022-01-11T15:54:40+0000", "created_date": "2022-01-11T15:54:39+0000", "request_id": "d066dfd72443584e1a35bb5eed60415aeb15ccfa-1...0", "sum_initial": { "amount": 200000, "currency": "EUR" }, "sum_converted": { "amount": 200000, "currency": "EUR" }, "provider": { "id": 120, "payment_id": "227307324", "date": "2022-01-11T15:54:40+0000", "auth_code": "919372", "endpoint_id": 120 }, "code": "0", "message": "Success" }, "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm..." } ``` - *Необходимость действий на стороне веб-сервиса.* Как правило, это оповещения с информацией для перенаправления пользователей, для отображения им определённой информации и для указания дополнительных данных, необходимых для проведения платежа. ```language-json "redirect_data":{ "method": "GET", "body": [], "encrypted": [], "url": "https://test.ph/Pay.aspx?tokenid=3f511c2d&procid=BITC" } ``` ```language-json "display_data": [ { "type": "qr_data", "title": "QR code", "data": "weixin://wxpay/bizpayurl?pr=dMrSpJG" }, { "type": "add_info", "title": "QR Code Timeout", "data": "600" } ] ``` - *Формирование или удаление токена платёжной карты.* Это оповещения с информацией о событиях, связанных с токенами платёжных карт \(таких, как формирование и удаление токенов\). ```language-json { "general":{ "project_id":42, "customer_id":17008, "signature":"gmTHcy4ISuWEiV8+AupOYkl9S5eLZ", "request": { "id": "3c7f53fdbb5b8c96f9707457d75f", "action": "tokenize", "status": "success" }, "token":"f365bb1729f9b72fd9c0970e35c91d18070d15654", "token_created_at":"2022-01-28 13:30:57", "token_status":"active" } ``` ## Подключение и настройка {#ru_callbacks_configuration} ### Конфигурирование для проектов {#section_x1l_rt1_stb .section} В общем случае отправка оповещений для рабочих проектов мерчанта настраивается при интеграции веб-сервиса с платёжной платформой Ecommpay. Вместе с тем, для изменения правил отправки оповещений всегда можно использовать возможности интерфейса Dashboard \([подробнее](ru_dbl_projects.md#)\), а также указывать специальные параметры в запросах на проведение платежей \(подробнее [далее](ru_platform_callbacks.md#section_ut2_hjq_x5b)\) и при необходимости обращаться к специалистам технической поддержки Ecommpay. Со стороны мерчанта для оповещений можно настраивать следующие свойства: - Обязательность отправки. Оповещения могут отправляться как для всех событий, так и только для событий, соответствующих заданным условиям: по типам событий, платёжным методам, а также типам и статусам платежей и операций.Так, например, оповещения могут не отправляться для проведённых выплат на платёжные карты и отправляться для отклонённых. Это позволяет оперативно получать только необходимую информацию. - Адреса доставки. Оповещения по разным событиям могут отправляться на разные адреса веб-сервиса, с учётом типа события, платёжного метода, типа и статуса платежа и операции. Например, оповещения с итоговой информацией о проведении платежей могут отправляться на один адрес, а об отклонении платежей — на другой. - Время задержки отправки. При необходимости оповещения могут отправляться с задержкой до 600 секунд включительно, например для удобства их обработки на стороне веб-сервиса. - Состав параметров. Для удобства обработки на стороне веб-сервиса состав информации, передаваемой в оповещениях, можно варьировать: добавлять и удалять параметры, а также заменять их названия и определять обязательность включения параметров с пустыми значениями. При этом нельзя менять структуру оповещений и исключать обязательные параметры. Стоит учитывать, что отдельные параметры могут быть обязательными для всех или только для определённых типов оповещений. Обязательные параметры передаются в оповещениях в любом случае, а необязательные — только в тех случаях, когда была получена соответствующая информация либо когда настроена отправка таких параметров даже с пустыми значениями. Таким образом, оповещения об одинаковых событиях в разных случаях могут выглядеть по-разному. ```language-json { "account": { "number": "431422******0056", "token": "f365bb1729f9b72fd9c0970e35c91d18070d15654", "type": "visa", "card_holder": "SONYA KOVALEVSKY", "expiry_month": "05", "expiry_year": "2025" }, "customer": { "id": "17008", "phone": "79012345678" }, "payment": { "date": "2022-11-11T13:02:42+0000", "id": "456789", "method": "card", "status": "success", "sum": { "amount": 40000, "currency": "EUR" }, "type": "purchase", "description": "" }, "project_id": 42, "operation": { "id": 969000002636, "type": "sale", "status": "success", "date": "2022-11-11T13:02:42+0000", "created_date": "2022-11-11T13:01:45+0000", "request_id": "c6eed1eb14c6290088cbc0be4667c", "sum_initial": { "amount": 40000, "currency": "EUR" }, "sum_converted": { "amount": 40000, "currency": "EUR" }, "provider": { "id": 408, "payment_id": "330157196", "date": "2022-11-11T13:02:32+0000", "auth_code": "", "endpoint_id": "612266625" }, "code": "0", "message": "Success", "eci": "07" }, "signature": "v7KNMpfIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...==" } ``` ```language-json { "account": { "number": "431422******0056", "token": "f365bb1729f9b72fd9c0970e35c91d18070d15654", "type": "visa", "card_holder": "SONYA KOVALEVSKY", "id": 45678, "expiry_month": "05", "expiry_year": "2025" }, "customer": { // объект с расширенной информацией о пользователе "id": "17008", "email": "sonya.kovalevsky@example.com" "phone": "79012345678", "first_name": "Sonya", "last_name": "Kovalevsky" }, "payment": { "date": "2022-11-11T13:02:42+0000", "id": "456789", "method": "card", "status": "success", "sum": { "amount": 40000, "currency": "EUR" }, "type": "purchase", "description": "" }, "project_id": 91663, "operation": { "id": 969000002636, "type": "sale", "status": "success", "date": "2022-11-11T13:02:42+0000", "created_date": "2022-11-11T13:01:45+0000", "request_id": "c6eed1e088cbc0be4667c", "sum_initial": { "amount": 40000, "currency": "EUR" }, "sum_converted": { "amount": 40000, "currency": "EUR" }, "provider": { "id": 408, "payment_id": "330157196", "date": "2022-11-11T13:02:32+0000", "auth_code": "", "endpoint_id": "612266625" }, "code": "0", "message": "Success", "eci": "07" }, "signature": "v7KNMpfogVftZ1ZZ5D/aZAeb0VMdeR+CqGrYyilUwSm...==" } ``` ### Управление отправкой для отдельных платежей {#section_ut2_hjq_x5b .section} При проведении платежей через Gate можно задавать адреса доставки оповещений, их обязательность и время задержки при отправке. Для этого в запросах на проведение платежей могут использоваться следующие параметры: - `merchant_callback_url` \(в объекте `general`\) — адрес доставки оповещений по этому запросу; - `force_disable` \(в объекте `callback`\) — указатель запрета отправки оповещений \(со значениями `true` для запрета отправки оповещений с информацией о данном платеже и `false` для разрешения их отправки\); - `delay` \(в объекте `callback`\) — задержка отправки оповещений, в секундах \(от 0 до 600; например, `42`\). Информацию о возможности использования этих параметров при запросах к конкретным конечным точкам можно найти в спецификации [Gate API](https://api-developers.ecommpay.com/). ```language-json { "general":{ "project_id":42, "payment_id":"456789", "merchant_callback_url":"https://example.com", "signature":"v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...==" }, "customer": { "id": "customer1", "ip_address": "66.249.64.45", "first_name": "John", "last_name": "Doe" }, "payment":{ "amount":40000, "currency":"EUR" }, "callback":{ "delay":42 // время задержки, равное 42 секундам }, "card":{ "pan":"4314220000000056", "year":2025, "month":5, "card_holder":"SONYA KOVALEVSKY", "cvv":"123" } } ``` ## Использование {#ru_callbacks_usage} ### Порядок работы {#section_kbg_v1q_stb .section} Технически оповещение представляет собой HTTP-POST-сообщение, отправляемое на предоставленный мерчантом URL. Порядок реагирования на каждое поступающее оповещение со стороны веб-сервиса сводится к следующим шагам: 1. Принять и проверить оповещение. Принимать оповещения следует только с IP-адресов платёжной платформы, предоставленных специалистами технической поддержки Ecommpay. При этом не следует ограничивать время ожидания оповещений, поскольку разные события могут наступать в различное время, а для отправки дополнительно может использоваться задержка. Чтобы подтверждать достоверность отправителя и целостность данных, необходимо проверять подпись, включаемую в состав каждого оповещения. Подробнее о такой проверке — в разделе [Работа с подписью к данным](ru_platform_signature.md#). 2. Подтвердить получение оповещения. Чтобы подтверждать получение оповещений, необходимо отправлять к платёжной платформе синхронные HTTP-сообщения: при приёме оповещений без ошибок — с кодом ответа `200 ОК`, в остальных случаях — с кодами ответов, соответствующими ошибкам, например `HTTP 400 Bad Request`, если не удалось преобразовать строку параметров в массив, или `HTTP 500 Internal Server Error`, если оповещение поступило на некорректный URL веб-сервиса. Если от веб-сервиса не поступило сообщение с кодом ответа `200 ОК`, независимо от характера ошибки оповещение отправляется повторно. 3. Выполнить необходимые действия. При получении предписывающих оповещений необходимо выполнять действия согласно этим оповещениям, при получении уведомительных — согласно специфике работы веб-сервиса, например с уведомлениями пользователей. ### Повторные отправления {#section_m1m_f2p_w5b .section} Если в платёжной платформе получена информация об ошибке при приёме оповещения или получение оповещения не подтверждено, такое оповещение отправляется повторно. При этом сведения в повторно отправляемых оповещениях могут меняться при изменении соответствующей информации в платёжной платформе: например, при изменении статуса платежа в последующие за этим оповещения включается информация уже о новом статусе. В общем случае отправка повторных оповещений выполняется в следующем порядке: 1. 6 попыток с нарастающим интервалом, от 10 до 60 секундс увеличением на 10 секунд для каждой попытки. 2. 58 попыток с нарастающим интервалом, от 84 секунд до 2,5 часовс увеличением по формуле `70 + 10 × 1,12n − 4` \(в секундах\), где *n* — порядковый номер попытки. 3. 56 попыток каждые 4 часадо достижения в общей сложности 120 попыток, после чего отправка оповещений по этому событию прекращается. Этот порядок может незначительно меняться с учётом загруженности серверов и каналов связи, но в целом автоматические попытки доставить оповещение укладываются в 11 суток. Для изменения этого порядка можно обращаться к специалистам технической поддержки Ecommpay. Кроме того, помимо автоматической повторной отправки оповещений в необходимых случаях можно инициировать разовые повторные отправки с помощью интерфейса Dashboard. ### Устранение неисправностей {#section_cnz_f2k_45b .section} Оповещения могут не приходить на требуемые адреса по различным причинам. Со стороны мерчанта такие ситуации и способы реагирования на них можно разбить на несколько групп. - *Не приходят оповещения ни по одному из событий.* Это может быть связано с отсутствием в платёжной платформе целевых запросов и событий, с проблемами в каналах связи и недействительностью заданных URL веб-сервиса, а также с отключением отправки оповещений по проекту. В таких ситуациях рекомендуется: 1. Убедиться, что со стороны веб-сервиса отправлялись корректные запросы\(без запрета отправки оповещений\) и они были приняты со стороны платформы. При необходимости отправить тестовый запрос, например на формирование токена платёжной карты. 2. Если запросы принимаются в платформе, но оповещения по-прежнему не приходят — проверить работоспособность URL для приёма оповещений. При обнаружении проблем восстановить работоспособность адресов или изменить их на корректные: самостоятельно, через интерфейс Dashboard, или с помощью специалистов технической поддержки Ecommpay. 3. Если по итогам предыдущих действий проблему не удалось решить — обратиться к специалистам технической поддержки Ecommpay. - *Не приходят оповещения по событиям отдельных типов.* Это может быть связано с отсутствием событий таких типов, с недействительностью URL веб-сервиса или с отключением отправки оповещений для событий этих типов. В таких ситуациях рекомендуется: 1. Убедиться в наличии событий тех типов, по которым не приходят оповещения, используя карточки платежей в интерфейсе Dashboard. 2. Если такие события выполнялись, но оповещения по-прежнему не приходят — проверить работоспособность URL для приёма оповещений по событиям соответствующих типов. При обнаружении проблем восстановить работоспособность адресов или изменить их на корректные: самостоятельно, через интерфейс Dashboard, или с помощью специалистов технической поддержки Ecommpay. 3. Если проблему не удалось решить — обратиться к специалистам технической поддержки Ecommpay. - *Не приходит оповещение по конкретной операции.* Это может быть связано с тем, что в объекте `callback` запроса на выполнение операции был передан параметр `force_disable` со значением `true`. В такой ситуации уточнять состояние операции можно через Gate, используя запросы на получение соответствующей информации \([подробнее](ru_Gate_payment_status_request.md#)\), и[Dashboard](ru_dbl_payments.md#). ## Передаваемые параметры {#ru_callbacks_parameters} ### Параметры оповещений о платежах и операциях {#section_jsq_s1g_ptb .section} Состав и названия параметров, передаваемых в оповещенияx о платежах и операциях, могут быть базовыми или индивидуально настроенными для отдельных проектов. К базовым относятся следующие параметры. |Параметр|Описание|tree| |--------|--------|----| |account object, optional |Объект, содержащий информацию о платёжных данных пользователя\(например, данных платёжной карты, счёта или электронного кошелька\)|10| |card\_holder string, optional |Имя держателя платёжной карты. Пример: `SONYA KOVALEVSKY` |10-10 10| |expiry\_month string, optional |Порядковый номер месяца срока действия платёжной карты. Пример: `05` |10-20 10| |expiry\_year string, optional |Год срока действия платёжной карты. Пример: `2025` |10-30 10| |id integer, optional |Идентификатор сохранённых платёжных данных, используемый в платёжной платформе\([подробнее](ru_gate_saved_data.md)\). Пример: `56789` |10-40 10| |number string, required |Маскированный номер или иной идентификатор платёжного инструмента пользователя \(например, платёжной карты, счёта или электронного кошелька\). Пример: `431422******0056` |10-50 10| |token string, optional |Токен платёжной карты, если он был сформирован при выполнении запроса \([подробнее](ru_Gate_Token.md)\) |10-60 10| |type string, optional |Указатель бренда платёжной карты, с использованием которой был проведён платёж: `amex`,`mastercard`, `maestro`, `visa`и другие |10-70 10| |acs object, optional |Объект, содержащий информацию о результате аутентификации пользователя с применением протокола 3‑D Secure|20| |acs\_url string, required |Адрес страницы, на которую перенаправлялся пользователь для его аутентификации с применением протокола 3‑D Secure \(ACS-страницы\) |20-10 20| |md string, required |Данные о мерчанте, полученные от международной платёжной системы при аутентификации пользователя с применением протокола 3‑D Secure \(Merchant Data\) |20-20 20| |pa\_req string, required |Сообщение PAReq \(Payer Authentication Request\), полученное при аутентификации пользователя с применением протокола 3‑D Secure|20-30 20| |avs\_data object, optional |Объект, содержащий информацию о результате проверки Address Verification Service \(AVS, [подробнее](ru_Gate_avs.md)\)|30| |avs\_post\_code string, optional |Почтовый индекс пользователя, переданный для выполнения проверки AVS. Пример: `LT-071171` |30-10 30| |avs\_street\_address string, optional |Адрес пользователя, переданный для выполнения проверки AVS. Пример: `Вильнюс, улица Дукшту, 30` |30-20 30| |avs\_result string, optional |Код результата проверки AVS \([подробнее](ru_Gate_avs.md)\). Пример: `F` |40| |bank object, optional |Объект, содержащий информацию об эмитенте платёжной карты, использованной при проведении платежа|50| |name string, optional |Название эмитента в платёжной платформе. Пример: `CITIBANK` |50-10 50| |customer object, optional |Объект, содержащий информацию о пользователе|70| |billing object, optional |Объект, содержащий информацию о платёжном адресе пользователя, полученном в платёжной платформе при проведении платежа|70-10 70| |address string, optional |Название улицы расчётного адреса пользователя. Пример: `Дукшту` |70-10-10 70-10| |city string, optional |Название города платёжного адреса пользователя. Пример: `Вильнюс` |70-10-20 70-10| |country string, optional |Код страны платёжного адреса пользователя в формате ISO 3166-1 alpha-2. Пример: `LT` |70-10-30 70-10| |postal string, optional |Индекс платёжного адреса пользователя. Пример: `LT-071171` |70-10-40 70-10| |region string, optional |Название региона \(района, области, края или республики\) платёжного адреса пользователя. Пример: `Вильнюсский уезд` |70-10-50 70-10| |city string, optional |Название города пользователя.Пример: `Вильнюс` |70-20 70| |country string, optional |Код страны пользователя в формате ISO 3166-1 alpha-2. Пример: `LT` |70-30 70| |day\_of\_birth string, optional |Дата рождения пользователя в формате ДД-ММ-ГГГГ. Пример: `17-04-1989` |70-40 70| |first\_name string, optional |Имя пользователя. Пример: `Софья` |70-50 70| |id string, optional |Идентификатор пользователя в рамках проекта мерчанта. Пример: `17008` |70-60 70| |ip\_address string, required |IP-адрес пользователя, актуальный для данной операции. Пример: `192.0.2.32` |70-70 70| |last\_name string, optional |Фамилия пользователя.Пример: `Ковалевская` |70-80 70| |middle\_name string, optional |Отчество или среднее имя пользователя.Пример: `Васильевна` |70-90 70| |phone string, optional |Номер телефона пользователя, содержащий от 4 до 24 цифр. Пример: `44997654321` |70-100 70| |decision string, optional |Строка, содержащая информацию об оценке допустимости проведения платежа на стороне платёжной платформы|80| |decision\_message array, optional |Массив записей, содержащий информацию об оценке допустимости проведения платежа на стороне платёжной платформы. Пример: `reject.message("RCS reject. Amount less than allowed")` |90| |display\_data object, optional |Объект, содержащий информацию, необходимую для отображения пользователю. Как правило, в этом объекте передаются сведения, полученные от провайдера или платёжной системы. Специфика для разных платёжных методов обычно указывается в статьях с описанием этих методов. Пример: `Approve the payment request sent to your phone` |100| |errors array, optional |Массив с сообщениями об ошибках, полученных при выполнении запроса|110| |ErrorItem object, required |Объект, содержащий информацию об ошибке при выполнении запроса|110-10 110| |code integer, optional |Код ошибки. Пример: `3287` |110-10-10 110-10| |description string, optional |Сведения о причине ошибки. Пример: `EMPTY_REFUND_CURRENCY` |110-10-10 110-10| |field string, optional |Название параметра, при указании которого была допущена ошибка \(если такой параметр определён\)|110-10-20 110-10| |message string, optional |Пояснение к коду ошибки. Пример: `The property currency is required` |110-10-30 110-10| |interface\_type object, optional |Объект, содержащий информацию о способе инициирования платежа|120| |id integer, optional |Индикатор интерфейса, через который поступил исходный запрос:- `1` — запрос поступил через Gate - `5` — запрос поступил через Dashboard - `6` — запрос поступил через Payment Page, открытой в модальном окне - `7` — запрос поступил через Payment Page, открытой в объекте iframe HTML-страницы |120-10 120| |user string, optional |Сведения об учётной записи пользователя Dashboard, отправившего исходный запрос. Пример: `janedoe@cosmoshop.com` |120-20 120| |operation object, optional |Объект, содержащий информацию об операциях, относящихся к платежу|130| |code string, optional |Код состояния операции \([подробнее](ru_platform_payment_info_codes.md)\). Пример: `0` |130-10 130| |created\_date string, optional |Дата и время создания операции. Пример: `2022-10-08T18:52:19+0000` |130-20 130| |date string, optional |Дата и время последнего обновления статуса операции в платёжной платформе. Пример: `2022-10-08T18:52:54+0000` |130-30 130| |eci string, optional |Индикатор результата аутентификации пользователя с применением протокола 3‑D Secure \([подробнее](ru_ECI_codes.md)\). Пример: `07` |130-40 130| |id integer, optional |Идентификатор операции в платёжной платформе. Пример: `17007255` |130-50 130| |message string, optional |Пояснительное описание к коду состояния операции \([подробнее](ru_platform_payment_info_codes.md)\). Пример: `Success` |130-60 130| |provider object, optional |Объект, содержащий информацию о результате выполнения платежа, полученную от провайдераилиплатёжной системы|130-70 130| |auth\_code string, optional |Код авторизации, полученный от провайдераилиплатёжной системы. Пример: `331040` |130-70-10 130-70| |date string, optional |Дата и время завершения обработки платежа на стороне провайдераилиплатёжной системы. Пример: `2022-10-08T18:52:53+0000` |130-70-20 130-70| |endpoint\_id string \(integer\), optional |CRC32-идентификатор провайдераилиплатёжной системы. Пример: `2` |130-70-30 130-70| |id integer, optional |Идентификатор провайдераилиплатёжной системы в платёжной платформе. Пример: `2` |130-70-40 130-70| |payment\_id string, optional |Идентификатор платежа на стороне провайдераилиплатёжной системы. Пример: `603458` |130-70-50 130-70| |recurring\_retry object, optional |Объект, содержащий информацию о повторных попытках списаний в рамках регулярных оплат \([подробнее](ru_Gate__cof_gate_side.md#)\)|130-80 130| |next\_retry\_date string, optional |Дата и время следующей попытки списания. Пример: `2022-10-08T18:52:19+0000` |130-80-10 130-80| |next\_retry\_exists boolean, optional |Индикатор наличия следующей запланированной попытки списания: - `true` — повторная попытка запланирована, - `false` — повторная попытка не запланирована. Этот параметр обязателен, если передан объект `recurring_retry`. |130-80-20 130-80| |retry\_count integer, optional |Номер повторной попытки \(число от 1 до 7\), если такая попытка была выполнена. Пример: `3` |130-80-30 130-80| |trigger\_operation\_id integer, optional |Идентификатор очередного списания, для которого была выполнена повторная попытка. Пример: `17007255` |130-80-40 130-80| |request\_id string, required |Идентификатор последнего запроса, относящегося к данной операции, в платёжной платформе |130-90 130| |status string, required |Статус операции \(в соответствии [c моделью проведения платежей](ru_platform_payment_model.md)\). Пример: `success` |130-100 130| |sum\_converted object, optional |Объект, содержащий информацию о сумме и валюте операции после конвертации\([подробнее о конвертации](ru_Gate_Conversion.md)\)|130-110 130| |amount integer, optional |Сумма операции. В дробных единицах валюты, если они применимы, или в целых единицах. Пример: `8726` |130-110-10 130-110| |currency string, optional |Код валюты операции в формате ISO 4217 alpha-3. Пример: `EUR` |130-110-20 130-110| |sum\_initial object, optional |Объект, содержащий информацию о сумме и валюте операции, переданных в запросе|130-120 130| |amount integer, required |Исходная сумма операции в дробных единицах валюты. Пример: `9055` |130-120-10 130-120| |currency string, required |Код исходной валюты операции в формате ISO 4217 alpha-3. Пример: `USD` |130-120-20 130-120| |type string, required |Тип операции \(в соответствии [с моделью проведения платежей](ru_platform_payment_model.md)\). Пример: `sale` |130-130 130| |payment object, required |Объект, содержащий основные сведения о платеже|140| |cascading\_with\_redirect boolean, optional |Индикатор необходимости получить подтверждение пользователя на дополнительную попытку проведения оплаты в случае получения отказа при выполнении аутентификации 3‑D Secure \([подробнее](ru_gate_cascading.md#)\):- `true` — подтверждение требуется - `false` — подтверждение не требуется |140-10 140| |date string, optional |Дата и время последнего обновления статуса платежа в платёжной платформе. Пример: `2022-10-08T18:52:54+0000` |140-20 140| |description string, optional |Описание платежа, переданное в исходном запросе. Пример: `Радиоуправляемая модель летающей тарелки Nano Size с доставкой` |140-30 140| |id string, required |Идентификатор платежа, переданный в исходном запросе. Пример: `18641868` |140-40 140| |is\_new\_attempts\_available boolean, optional |Индикатор возможности выполнить повторную попытку оплаты \([подробнее](ru_PP_Try_Again.md)\): - `true` — повторная попытка доступна - `false` — повторная попытка недоступна |140-50 140 е| |method string, optional |Код платёжного метода \([подробнее](ru_pm_codes.md)\). Пример: `card` |140-60 140| |merchant\_refund\_id string, optional |Идентификатор, полученный при инициировании возврата со стороны веб-сервиса. Пример: `refund_143` |140-61 140| |OperationFee object, optional |Объект, содержащий информацию о сумме комиссии|140-70 140| |amount string, optional |Сумма комиссии в дробных единицах валюты, если эта сумма включена в общую сумму операции|140-70-10 140-70| |currency string, optional |Код валюты, в которой начислена комиссия, в формате ISO 4217 alpha-3|140-70-20 140-70| |sum\_with\_surcharge string, optional |Общая сумма операции и надбавленной комиссии в дробных единицах валюты|140-70-30 140-70| |surcharge\_amount string, optional |Сумма комиссии, надбавленной к сумме платежа, в дробных единицах валюты \(применяется для микрофинансовых организаций, МФО\)|140-70-40 140-70| |surcharge\_currency string, optional |Код валюты, в которой начислена сумма комиссии, надбавленная к сумме платежа, в формате ISO 4217 alpha-3|140-70-50 140-70| |region string, optional |Код региона выполнения операции \([подробнее](ru_region_codes.md)\). Пример: `eea` |140-80 140| |status string, required |Cтатус платежа \(в соответствии [с моделью проведения платежей](ru_platform_payment_model.md)\). Пример: `partially refunded` |140-90 140| |sum object, optional |Объект, содержащий информацию о сумме и валюте платежа|140-100 140| |amount integer, required |Сумма платежа с учётом всех выполненных операций, в дробных единицах валюты. Пример: `8855` |140-100-10 140-100| |currency string, required |Код валюты платежа, переданный в исходном запросе, в формате ISO 4217 alpha-3. Пример: `USD` |140-100-20 140-100| |timeout\_attempts string, optional |Время, в течение которого возможно выполнение повторных попыток оплаты \([подробнее](ru_PP_Try_Again.md)\), в секундах. Пример: `360` |140-110 140| |type string, required |Тип платежа \(в соответствии [с моделью проведения платежей](ru_platform_payment_model.md)\). Пример: `purchase` |140-120 140| |scheme\_id string, optional |Идентификатор операции, в рамках которой была зарегистрирована повторяемая оплата, на стороне международной платёжной системы \(Mastercard или Visa\). Может передаваться при регистрации повторяемой оплаты для карты, выпущенной в Европейской экономической зоне. Пример: `MCS38A0790706` |210| |project\_id integer, required |Идентификатор проекта мерчанта в платёжной платформе. Пример: `42` |150| |provider\_extra\_fields object, optional |Объект, содержащий информацию, поступившую от провайдераилиплатёжной системы|160| |recurring object, optional |Объект, содержащий информацию о повторяемой оплате \([подробнее](ru_Gate__payments_on_saved_data.md)\)|170| |currency string, optional |Код валюты повторяемой оплаты в формате ISO 4217 alpha-3. Пример: `USD` |170-10 170| |id integer, optional |Идентификатор записи о серии списаний, присвоенный на стороне платёжной платформы \([подробнее](ru_PP_Try_Again.md)\) в платёжной платформе. Пример: `1001648` |170-20 170| |register\_payment\_id string, optional |Идентификатор записи о серии списаний \([подробнее](ru_PP_Try_Again.md)\) в веб-сервисе мерчанта. Пример: `18641865` |170-30 170| |status string, optional |Статус записи о серии списаний \([подробнее](ru_PP_Try_Again.md)\):- `active` — запись о серии списаний действительна - `canceled` — запись о серии списаний недействительна \(например, если повторяемая оплата отменена по запросу мерчанта\) |170-40 170| |type string, optional |Тип повторяемой оплаты \([подробнее](ru_PP_Try_Again.md)\):- `C` — экспресс-оплата \(OneClick\) - `U` — автооплата - `R` — регулярная оплата |170-50 170| |valid\_thru string, optional |Дата, до наступления которой возможно выполнение списаний \([подробнее](ru_PP_Try_Again.md)\). Пример: `2023-05-20T00:00:00+0000` |170-60 170| |redirect\_data object, optional |Объект, содержащий данные для перенаправления пользователя|180| |body object, optional |Данные для перенаправления пользователя|180-10 180| |method string, optional |Требуемый HTTP-метод отправки запроса на перенаправление: `POST` или `GET`|180-20 180| |url string, optional |URL, на который требуется направить пользователя|180-30 180| |signature string, required |Подпись оповещения \([подробнее](ru_platform_signature.md#)\)|190| ### Параметры оповещений о токенах {#section_mhj_cvg_5tb .section} Состав и названия параметров, передаваемых в оповещенияx о действиях с токенами, таких как формирование или удаление токенов, могут быть базовыми или индивидуально настроенными для отдельных проектов. К базовым относятся следующие параметры. |Параметр|Описание| | |--------|--------|--| |general object, required |Объект с основными идентификационными сведениями из исходного запроса на формирование токена|1| |project\_id string, required |Идентификатор проекта мерчанта в платёжной платформе. Пример: `42` |1-11| |customer\_id string, optional |Идентификатор пользователя в проекте мерчанта. Пример: `17008` |1-21| |signature string, required |Подпись оповещения|1-31| |request object, required |Объект со сведениями об исходном запросе|2| |id integer, required |Идентификатор исходного запроса |2-12| |action string, optional |Тип исходного запроса:- `tokenize` — запрос на формирование токена; - `token_revoke` — запрос на удаление токена; Этот параметр может отсутствовать в случае, если токен деактивирован по истечению его срока действия и отправка оповещения инициирована автоматически в связи с этим событием |2-22| |status string, required |Статус запроса:- `success` — запрос выполнен - `error` — запрос не выполнен из-за возникновения ошибок, сведения о которых указаны в массиве `errors` |2-32| |errors array, optional |Массив с информацией об ошибках, возникших при выполнении запроса.Этот массив не передаётся в случаях, когда запрос выполнен без ошибок |2-42| |ErrorItem object, required |Объект с информацией об ошибке, возникшей при выполнении запроса|2-4-12-4| |code string, optional |Код ошибки, возникшей при выполнении запроса. Пример: `3021` |2-4-1-12-4-1| |message string, optional |Поясняющее описание к коду ошибки. Пример: `Card expired` |2-4-1-22-4-1| |field string, optional |Название параметра исходного запроса, в котором допущена ошибка, если этот параметр определён|2-4-1-32-4-1| |token string, optional |Токен платёжной карты |3| |token\_created\_at string, optional |Дата и время формирования токена карты. Пример: `2022-07-22T03:31:24+0000` |4| |token\_status string, optional |Статус токена:- `active` — токен действителен и может использоваться при проведении платежей; - `expiry` — токен недействителен, так как срок его действия истёк; - `revoke` — токен недействителен, так как был удалён по запросу со стороны веб-сервиса мерчанта |5| ## Дополнительные материалы {#ru_callbacks_links} При работе с оповещениями могут быть полезны: - [Организация взаимодействия](ru_gate_interaction_organisation.md#)— раздел с общей информацией о взаимодействии с платёжной платформой через Gate. - [Работа с подписью к данным](ru_platform_signature.md#)— раздел с информацией о работе с подписью к данным. - [Работа с информацией об операциях](ru_platform_payment_info_codes.md)— раздел с информацией о кодах ошибок, используемых в платёжной платформе. - [Контроль и проведение платежей](ru_dbl_payments.md#)— раздел с информацией о проведении и контроле проведения платежей и операций через Dashboard. - [Использование токенов](ru_Gate_Token.md)— раздел с информацией о работе с токенами карт. - [Спецификация Gate API](https://api-developers.ecommpay.com/)— спецификация интерфейса Gate API.