Документация

Уведомление мерчанта о статусе платежа

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'