OCTO уведомляет магазин о новом статусе платежа только в том случае, если платеж был создан через API (не из личного кабинета мерчанта или прочие каналы).
Если при создании платежа магазин не установил поле auto_capture = false
, то для методов платежей подразумевающих подтверждение, в процессе выполнения платежа (пока покупатель находится в адресной зоне ПС Octo) ПС Octo будет производить 2 внутренних запроса (без перенаправления пользователя в магазин) к магазину.
URL для таких запросов (notify_url) должен быть указан в ЛК магазина в разделе Настройки.
1-й запрос - запрос подтверждения платежа. (только при auto_capture = false
)
2-й запрос - уведомление магазина о финальном статусе платежа.
Запрос выполняется методом POST
, данные в теле запроса в формате JSON
:
{
"shop_transaction_id": "uniq shop transaction_id",
"octo_payment_UUID": "1145df74-bb95-47cf-a616-8d6dcee2e222",
"status": "waiting_for_capture",
"signature": "DE3457A3456BB2563454FFF34643EAE3473657347CCBEFD234",
"hash_key": "453fg54j3f6g"
}
Описание полей ответа Octo:
Поле | Обязательно | Описание |
---|---|---|
status | да | Статус данного платежа в системе Octo. При запросе подтверждения должен быть waiting_for_capture .При любом другом статусе данный запрос носит уведомительный характер. |
shop_transaction_id | да | Уникальный идентификатор транзакции на стороне магазина. |
octo_payment_UUID | да | Уникальный идентификатор транзакции в ПС Octo. |
total_sum | нет | Полная сумма платежа, указанная магазином при создании платежа |
transfer_sum | нет | Сумма по счету за вычетом комиссии Octo, доступная для возврата средств покупателю |
refunded_sum | нет | Возвращенная покупателю сумма |
payed_time | нет | Время завершения платежа в формате YYYY-MM-DD hh:mm:ss |
maskedPan | нет | Маскированный номер карты, которой был оплачен счет |
signature | да | Служит для проверки подлинности запроса от ОКТО и вычисляется как "sha1(sha1("yahont" + secret + hash_key).toUpperCase(), uuid, status).toUpperCase()" |
hash_key | да | Случайная комбинация символов для вычисления signature данного запроса |
test | нет | Передается true только для тестовых платежей |
rrn | нет | RRN успешного платежа международной картой |
riskLevel | нет | Уровень фрод-риска (от 0 (мин.) до 10 (макс.)) |
ПС Octo ожидает HTTP статус 200 и в теле ответа JSON. В случае если магазин установил auto_capture = false при создании платежа, то магазин может изменить первоначальную сумму в меньшую сторону, передав параметр суммы:
{
"accept_status": "capture",
"final_amount": 100000
}
Поле | Обязательно | Описание |
---|---|---|
accept_status | да | Обязательно для запросов со статусом платежа waiting_for_capture . Может принимать значения:capture - подтвердить платежcancel - отменить платеж |
final_amount | нет | Уменьшенная финальная сумма платежа |
Ввиду того, что система Octo в целях безопасности не хранит секретные ключи магазинов в явном виде и не может их использовать для подписи своих нотификаций, мы рекомендуем магазину для гарантии подлинности смены статуса по факту получения нотификации о смене статуса от Octo сделать дополнительный запрос в Octo для получения текущего статуса, т.к. запрос от магазина к Octo подписывается секретным ключом и шифруется.