Уведомление мерчанта о статусе платежа
Eight уведомляет магазин о новом статусе платежа только в том случае, если платеж был создан через API (не из личного кабинета мерчанта или прочие каналы).
Если при создании платежа магазин не установил поле auto_capture = false, то для методов платежей подразумевающих подтверждение, в процессе выполнения платежа (пока покупатель находится в адресной зоне ПС Eight) ПС Eight будет производить от 2 внутренних запроса (без перенаправления пользователя в магазин) к магазину. URL для таких запросов (notify_url) должен быть указан в ЛК магазина в разделе Настройки.
1-й запрос - запрос подтверждения платежа. (только при auto_capture = false) 2-й запрос - уведомление магазина о финальном статусе платежа.
Запрос выполняется методом POST, данные в теле запроса в формате JSON:
{
"shop_transaction_id": "57eb6181-de0d-456b-a420-eec1057bcbb8",
"payment_UUID": "dc77294c-1c61-4f9f-9849-5f5667ab80d7",
"status": "succeeded",
"signature": "6424F63C523BE6F1684C07A942ADAAAB26745B9A",
"hash_key": "26300a77-fe6e-4250-835e-2cc4a1837828",
"total_sum": 123,
"transfer_sum": 120.54,
"refunded_sum": 0,
"card_country": "UZ",
"masked_pan": "860006** **** 8440",
"risk_level": 0,
"payed_time": "2024-09-16 00:17:31",
"card_type": "uzcard"
}
Поле | Обязательное | Описание
:------------------ | :----------: | ---------------------------------------:
shop_transaction_id | Да | Уникальный идентификатор транзакции на стороне мерчанта.
signature | Да | Служит для проверки подлинности запроса от Eight и
вычисляется как
"sha1(sha1("yahont" + secret + hash_key).toUpperCase(), uuid, status).toUpperCase()"
payment_UUID | Да | Уникальный идентификатор транзакции в ПС Eight.
status | Да | Статус данного платежа в системе Eight
при запросе подтверждения должен быть waiting_for_capture.
При любом другом статусе данный запрос носит уведомительный характер.
hash_key | Да | Случайная комбинация символов для вычисления signature данного запроса
total_sum | Нет | Полная сумма платежа, указанная мерчантом при создании платежа
transfer_sum | Нет | Сумма по счету за вычетом комиссии Eight,
доступная для возврата средств покупателю
refunded_sum | Нет | Возвращенная покупателю сумма
payed_time | Нет | Время завершения платежа в формате YYYY-MM-DD hh:mm:ss
masked_pan | Нет | Маскированный номер карты, которой был оплачен счет
test | Нет | Передается true только для тестовых платежей
rrn | Нет | RRN успешного платежа международной картой
risk_level | Нет | Уровень фрод-риска (от 0 (мин.) до 10 (макс.))
card_country | Нет | Страна эмитент карты в формате Alpha-2(пример UZ для Узбекистана)
card_type | Нет | Вендор карты (возможные варианты "uzcard", "humo")
ПС Eight ожидает HTTP статус 200 и в теле ответа JSON. В случае если магазин установил auto_capture = false при создании платежа, то магазин может изменить первоначальную сумму в меньшую сторону, передав параметр суммы:
{
"accept_status": "capture",
"final_amount": 100000
}
Поле | Обязательное | Описание
:------------------ | :----------: | ---------------------------------------:
accept_status | Да | Обязательно для запросов со статусом платежа waiting_for_capture.
Может принимать значения:
capture - подтвердить платеж
cancel - отменить платеж
final_amount | Нет | Уменьшенная финальная сумма платежа
Ввиду того, что система Eight в целях безопасности не хранит секретные ключи магазинов в явном виде и не может их использовать для подписи своих нотификаций, мы рекомендуем магазину для гарантии подлинности смены статуса по факту получения нотификации о смене статуса от Eight сделать дополнительный запрос в Eight для получения текущего статуса, т.к. запрос от магазина к Eight подписывается секретным ключом и шифруется.
Запросы будут поступать до тех пор, пока сервер не ответит 200 кодом либо истечет время жизни запроса
В некоторых провайдерах возможен запрос о промежуточном статусе платежа 'wait_user_action'