Оповещения (callbacks) в Payment Page
Оповещение (callback) — это техническое сообщение, которое платежная платформа Rocketpay отправляет на заданный URL-адрес мерчанта, чтобы сообщить определенную информацию, например результат выполнения платежа.
Как выглядит оповещение в Rocketpay
Оповещение представляет собой HTTP-запрос, отправляемый методом POST на URL-адрес, который вы предоставляете Rocketpay в процессе интеграции.
Параметры оповещения передаются в теле запроса в формате JSON, при этом массив параметров преобразуется в одну строку. Вы можете настраивать, какие параметры должны передаваться в теле запроса. Для этого обращайтесь в службу поддержки Rocketpay.
Вот пример данных из тела оповещения типового формата. Содержимое JSON-строки в этом примере разбито на несколько строк для удобства чтения.
Рис.: Пример данных из оповещения типового формата
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2022-03-25T11:08:45+0000", "method": "mobile", "sum": { "amount": 10000, "currency": "USD" }, "description": "" }, "customer": { "id": "customer_123" }, "operation": { "id": 28, "type": "sale", "status": "success", "date": "2022-03-25T11:08:45+0000", "created_date": "2022-03-25T11:08:05+0000", "request_id": "9e32835fb27907e0b08569d7d150e387a16a80e336c5117242b5cf60a4e17839", "sum_initial": { "amount": 10000, "currency": "USD" }, "sum_converted": { "amount": 10000, "currency": "USD" }, "code": "0", "message": "Success", "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" } }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Ниже приведен пример данных из тела оповещения, настроенного индивидуально под потребности мерчанта.
Рис.: Пример данных из оповещения в индивидуально настроенном формате
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2022-03-25T11:08:45+0000", "method": "mobile", "sum": { "amount": 10000, "currency": "USD" }, "description": "" }, "customer": { // объект с расширенной информацией о пользователе "id": "customer_123", "email": "johndoe@example.com", "phone": "491234567890", "first_name": "John", "last_name": "Doe" }, "operation": { "id": 28, "type": "sale", "status": "success", "date": "2022-03-25T11:08:45+0000", "created_date": "2022-03-25T11:08:05+0000", "request_id": "9e32835fb27907e0b08569d7d150e387a16a80e336c5117242b5cf60a4e17839", "sum_initial": { "amount": 10000, "currency": "USD" }, "sum_converted": { "amount": 10000, "currency": "USD" }, "code": "0", "message": "Success", "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" } }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Оповещения от Rocketpay содержат подпись. Подробнее о том, как проверить подпись в оповещении, см. раздел Подписывание и проверка подписи.
Когда Rocketpay отправляет оповещения
Платежная платформа отправляет вашей системе оповещения, когда:
- изменяется статус платежа. Это может быть связано, например, с перенаправлением пользователя, отображением пользователю инструкции для оплаты, прохождением процедуры аутентификации 3-D Secure пользователем, запросом у пользователя данных, недостающих для проведения платежа и т. д. Подробнее о статусах различных операций см. раздел Типы платежей, операции и платежи.
Если вы проводите платежи с использованием Payment Page, данные оповещения для вас несут информационный характер. Ваша система должна отвечать на них кодом состояния HTTP
200 OK
и не выполнять других действий. Вы можете отказаться от получения этих оповещений, если необходимо. Для этого обращайтесь в службу поддержки Rocketpay; - создан, удален или истек токен для банковской карты. Пример такого оповещения см. в разделе Оповещение (callback);
- завершена обработка операции в платежной платформе.
Адреса для приема оповещений
Оповещения отправляются на URL-адрес, который вы предоставляете Rocketpay в процессе интеграции. Если у вас есть несколько проектов, вы можете предоставить для каждого проекта отдельный URL-адрес, на который Rocketpay будет отправлять оповещения.
Вы можете предоставить Rocketpay отдельные URL-адреса, чтобы получать оповещения с определенной информацией по платежу. Например, чтобы оповещения об успешном завершении платежа платежная платформа отправляла на один адрес, а об отклонении — на другой. Вы также можете использовать отдельный URL-адрес для получения оповещений по платежам определенного типа или платежам, проведенным с использованием конкретного платежного метода.
Вы можете самостоятельно указать дополнительные адреса для приема оповещений в Dashboard. Для этого в Dashboard перейдите в раздел Проекты и выберите вкладку Оповещения. Инструменты в Dashboard позволят вам определить, в каких случаях и на какие адреса Rocketpay будет отправлять вашей системе оповещения. Подробнее о том, как задать адреса для отправки оповещений в Dashboard, см. раздел Правила отправки оповещений.
Обратите внимание, что ваша система должна принимать оповещения только с IP-адреса, полученного от команды интеграции Rocketpay. Чтобы уточнить IP-адрес, с которого Rocketpay отправляет оповещения, обратитесь в службу поддержки Rocketpay.
Адреса для приема оповещений по конкретному платежу
Вы можете указать отдельный URL-адрес для приема оповещений по конкретному платежу. Для этого добавьте в запрос на открытие страницы оплаты параметр merchant_callback_url и задайте в качестве значения URL-адрес, на который Rocketpay будет отправлять оповещения. После этого все оповещения по этому платежу (и только по нему) будут отправляться на указанный URL-адрес независимо от того, какой URL-адрес для приема оповещений задан для вашего проекта.
Вы также можете указать в запросе параметры с URL-адресами, на которые Rocketpay будет отправлять оповещения с результатом конкретного платежа:
- merchant_success_callback_url — URL-адрес, на который Rocketpay отправит callback-оповещение о результате платежа, если он будет успешно проведен;
- merchant_decline_callback_url — URL-адрес, на который Rocketpay отправит callback-оповещение о результате платежа, если он будет отклонен.
Эти параметры приоритетнее параметра merchant_callback_url и URL-адреса, указанного в настройках вашего проекта. Так, если задать значения обоих параметров — merchant_callback_url и merchant_success_callback_url, то в случае успеха Rocketpay отправит оповещение с результатом платежа на URL-адрес, указанный в merchant_success_callback_url, игнорируя как параметр merchant_callback_url, так и URL-адрес, указанный для вашего проекте в платежной платформе. Аналогичная ситуация с параметром merchant_decline_callback_url , но с поправкой на то, что речь идет об итоговом оповещении об отклонении платежа.
Рис.: Пример данных из запроса на оплату с указанием URL-адресов для отправки оповещений по этому платежу
EPayWidget.run( { project_id: 1234, payment_id: 'payment_47', customer_id: 'customer_123', customer_first_name: 'John', customer_last_name: 'Doe', customer_email: 'johndoe@example.com', merchant_callback_url: 'http://example.com/callback/default', merchant_success_callback_url: 'http://example.com/success', merchant_decline_callback_url: 'http://example.com/decline', payment_currency: 'USD', payment_amount: 10000, signature: 'kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R\/ekpZhkIQg==' } )
Как отреагировать на оповещение
Ваша система должна ответить на оповещение кодом состояния HTTP 200 OK
, если она успешно приняла его. При этом, ваша система не должна ограничивать время приема оповещений, потому что оповещения от Rocketpay могут поступать с задержкой.
200 OK
и не предоставлять повторных услуг или дополнительных товаров в рамках этого платежа.Если ваша система приняла оповещение с ошибкой, она должна ответить на него кодом состояния HTTP, соответствующим ошибке, например 400 Bad Request
(если вам не удалось преобразовать строку параметров в массив) или 500 Internal Server Error
(если оповещение пришло на неправильный URL-адрес). Несмотря на то что ваша система приняла оповещение с ошибкой, она должна быть готова принять последующие оповещения, относящиеся к этому же платежу.
Если ваша система не ответила на оповещение кодом состояния HTTP 200 OK
, Rocketpay будет отправлять вам оповещения снова по следующему расписанию:
- 6 попыток с интервалом в 10 секунд;
- далее 62 попытки в течение четырех часов с увеличивающимся интервалом (интервал увеличивается в соответствии с формулой
70 + 10·1,12n-4
, где n — порядковый номер попытки отправки); - потом каждые 4 часа до достижения максимального количества попыток.
Всего Rocketpay отправляет 120 оповещений в течение 11 суток. Расписание отправки оповещений может незначительно изменяться в зависимости от загрузки системы.
Параметры оповещения
Набор параметров, передаваемых в оповещении (callback), может отличаться в зависимости от типа операции и конфигурации оповещений. В этом разделе приведены описания параметров, используемых в типовых случаях.
Параметр | Описание | tree |
---|---|---|
account |
Объект, содержащий данные банковской карты или учетной записи пользователя | 10 |
card_holder |
Имя владельца банковской карты | 10-10 10 |
expiry_month |
Месяц срока действия банковской карты | 10-20 10 |
expiry_year |
Год срока действия банковской карты | 10-30 10 |
id |
Идентификатор сохраненной карты в Gate | 10-40 10 |
number |
Маскированный номер банковской карты или учетной записи пользователя. Пример: |
10-50 10 |
token |
Токен банковской карты пользователя. Токен генерируется автоматически при успешной оплате при условии, что эта возможность была активирована при подключении | 10-60 10 |
type |
Тип банковской карты или наименование оператора мобильной связи, который использовался для оплаты. Доступные значения типов карт см. в разделе Поддерживаемые типы платежных карт. |
10-70 10 |
avs_data |
Объект, который содержит данные для AVS-проверки (Address Verification Service). Подробнее см. Проверка Address Verification Service | 30 |
avs_post_code |
Почтовый индекс пользователя | 30-10 30 |
avs_street_address |
Адрес пользователя | 30-20 30 |
avs_result |
Результат AVS-проверки (Address Verification Service). Подробнее см. в разделе Проверка Address Verification Service | 40 |
bank |
Объект, содержащий данные о банке-эмитенте карты пользователя | 50 |
name |
Наименование банка-эмитента карты пользователя | 50-10 50 |
customer |
Объект, содержащий информацию о пользователе, совершающем платеж | 70 |
billing |
Объект, содержащий информацию о платежном адресе пользователя | 70-10 70 |
address |
Платежный адрес пользователя | 70-10-10 70-10 |
city |
Город платежного адреса пользователя | 70-10-20 70-10 |
country |
Страна платежного адреса пользователя в формате ISO 3166-1 alpha-2. Пример: |
70-10-30 70-10 |
postal |
Индекс платежного адреса пользователя | 70-10-40 70-10 |
region |
Район, область, край или республика платежного адреса пользователя | 70-10-50 70-10 |
city |
Город пользователя. Пример: |
70-20 70 |
country |
Страна пользователя в формате ISO 3166-1 alpha-2, переданная в начальном запросе. Пример: |
70-30 70 |
day_of_birth |
Дата рождения пользователя в формате ДД-ММ-ГГГГ. Пример: |
70-40 70 |
first_name |
Имя пользователя. Пример: |
70-50 70 |
id |
Уникальный идентификатор пользователя в проекте | 70-60 70 |
ip_address |
IP-адрес пользователя, переданный в начальном запросе | 70-70 70 |
last_name |
Фамилия пользователя. Пример: |
70-80 70 |
middle_name |
Отчество пользователя. Пример: |
70-90 70 |
phone |
Телефон пользователя. Целое значение: от 4 до 24 цифр | 70-100 70 |
decision |
Строка, содержащая решение системы Risk Control System о прохождении платежа. | 80 |
decision_message |
Массив строк, содержащих сообщения от Risk Control System о прохождении платежа. Пример: |
90 |
display_data |
Объект, содержащий переданные от внешней платежной системы данные для отображения пользователю QR-кода для оплаты | 100 |
errors |
Массив сообщений об ошибках, связанных с проведением платежа | 110 |
ErrorItem |
Объект, содержащий информацию об одной ошибке | 110-10 110 |
code |
Код ошибки | 110-10-10 110-10 |
description |
Параметр, описывающий причину ошибки | 110-10-10 110-10 |
field |
Параметр, в котором допущена ошибка, если удалось определить неверный параметр | 110-10-20 110-10 |
message |
Сообщение, уточняющее причину ошибки | 110-10-30 110-10 |
interface_type |
Объект, содержащий информацию об источнике запроса на проведение платежа | 120 |
id |
Параметр, уточняющий, какой интерфейс использовался для отправки запроса на проведение платежа. Возможные значения:
|
120-10 120 |
user |
Параметр, уточняющий пользователя Dashboard. отправившего запрос на проведение платежа. Пример: |
120-20 120 |
operation |
Объект, содержащий информацию об операции, по которой отправлено оповещение | 130 |
code |
Унифицированный код ответа Gate. Подробнее о кодах ответов см. Статусы операций и коды ответов | 130-10 130 |
created_date |
Дата и время создания операции | 130-20 130 |
date |
Дата и время последнего обновления статуса операции в Gate | 130-30 130 |
eci |
Индикатор, отображающий результат аутентификации пользователя с использованием 3‑D Secure. Подробнее см. Коды Electronic Commerce Indicator | 130-40 130 |
id |
Уникальный идентификатор операции в Gate | 130-50 130 |
message |
Унифицированное сообщение Gate. Подробнее см. в Статусы операций и коды ответов | 130-60 130 |
provider |
Объект, который содержит информацию внешнего провайдера о результате выполнения платежа | 130-70 130 |
auth_code |
Код авторизации, полученный от внешнего провайдера | 130-70-10 130-70 |
date |
Дата и время завершения обработки платежа внешним провайдером. Пример: |
130-70-20 130-70 |
endpoint_id |
CRC32-идентификатор платежного шлюза внешнего провайдера. В некоторых случаях из-за особенностей платежных систем и провайдеров у этого параметра может быть тип integer |
130-70-30 130-70 |
id |
Внешний провайдер, через который была проведена операция | 130-70-40 130-70 |
payment_id |
Уникальный идентификатор платежа в системе внешнего провайдера | 130-70-50 130-70 |
request_id |
Уникальный идентификатор последнего запроса, относящегося к данной операции, в Gate | 130-80 130 |
status |
Статус проведенной операции. Подробнее о возможных статусах операций см. Статусы операций и коды ответов. | 130-90 130 |
sum_converted |
Объект, содержащий валюту платежной системы и сумму операции, переведенной в эту валюту | 130-100 130 |
amount |
Сумма операции в дробных единицах валюты платежной системы | 130-100-10 130-100 |
currency |
Валюта платежной системы в формате ISO 4217 alpha-3 | 130-100-20 130-100 |
sum_initial |
Объект, содержащий сумму и валюту операции, переданные в запросе | 130-110 130 |
amount |
Сумма операции, переданная в начальном запросе, в дробных единицах валюты | 130-110-10 130-110 |
currency |
Валюта операции в формате ISO 4217 alpha-3, переданная в начальном запросе | 130-110-20 130-110 |
type |
Тип проведенной операции | 130-120 130 |
payment |
Объект, содержащий данные о платеже | 140 |
date |
Дата и время последнего обновления статуса платежа в Gate. Пример: |
140-20 140 |
description |
Описание платежа, переданное в начальном запросе | 140-30 140 |
id |
Уникальный идентификатор платежа в веб-сервисе | 140-40 140 |
is_new_attempts_available |
Флаг, указывающий на возможность проведения повторной оплаты:
Этот параметр передается при включении повторных оплат при подключении через Payment Page |
140-50 140 |
method |
Платежный метод. Пример: |
140-60 140 |
merchant_refund_id |
Уникальный идентификатор возврата в системе мерчанта. Пример: |
140-61 140 |
operation_fee |
Объект, содержащий информацию о комиссии за операцию, начисленной Rocketpay | 140-70 140 |
amount |
Сумма комиссии за операцию в дробных единицах валюты, если она включена в общую сумму платежа | 140-70-10 140-70 |
currency |
Валюта, в которой начислена комиссия, в формате ISO 4217 alpha-3. Пример: |
140-70-20 140-70 |
sum_with_surcharge |
Общая сумма операции и надбавленной комиссии в дробных единицах валюты | 140-70-30 140-70 |
surcharge_amount |
Сумма надбавленной к сумме платежа комиссии в дробных единицах валюты. Применяется для МФО | 140-70-40 140-70 |
surcharge_currency |
Валюта, в которой начислена надбавленная к сумме платежа комиссия, в формате ISO 4217 alpha-3 | 140-70-50 140-70 |
region |
Регион страны, где проводится операция по банковской карте. Доступные значения см. в справочнике Коды регионов | 140-80 140 |
status |
Cтатус платежа. Пример: |
140-90 140 |
sum |
Объект, содержащий сумму платежа с учетом возвратов и валюту, переданную в начальном запросе | 140-100 140 |
amount |
Сумма платежа с учетом возвратов, в дробных единицах валюты | 140-100-10 140-100 |
currency |
Валюта платежа в формате ISO 4217 alpha-3, переданная в начальном запросе. Пример: |
140-100-20 140-100 |
timeout_attempts |
Время (в секундах), оставшееся до окончания периода, в течение которого возможно проведение повторной оплаты. Параметр передается при включении повторных оплат при подключении через Payment Page | 140-110 140 |
type |
Тип проведенного платежа. Пример: |
140-120 140 |
project_id |
Уникальный идентификатор проекта в Gate | 150 |
provider_extra_fields |
Объект, содержащий поступившие от внешней платежной системы данные, необходимые для завершения платежа или для отчетности | 160 |
recurring |
Объект, содержащий данные регистрации платежа как рекуррентного. Объект передается, если в начальном запросе на оплату было передано значение recurring_register=1 и оплата успешно проведена | 170 |
currency |
Валюта рекуррентного платежа в формате ISO 4217 alpha-3. Пример: |
170-10 170 |
id |
Идентификатор рекуррентного платежа | 170-20 170 |
register_payment_id |
Идентификатор рекуррентного платежа на стороне мерчанта | 170-30 170 |
status |
Статус повторяемой оплаты. Возможные значения:
|
170-40 170 |
type |
Тип рекуррентного платежа. Возможные значения:
|
170-50 170 |
valid_thru |
Дата истечения срока действия идентификатора рекуррентного платежа | 170-60 170 |
redirect_data |
Объект, содержащий данные для перенаправления пользователя в платежный метод для проведения платежа | 180 |
body |
Дополнительные данные для перенаправления. Если этот параметр не содержит данных, он представлен в оповещении как пустой массив ( Если он параметр какие-то данные, то присутствует в оповещении как JSON-объект ( |
180-10 180 |
method |
Метод отправки запроса: POST или GET
|
180-20 180 |
url |
URL-адрес для перенаправления пользователя | 180-30 180 |
signature |
Подпись оповещения. Подробнее о проверке подписей оповещений см. | 190 |