Уведомление магазина о статусе платежа.

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 подписывается секретным ключом и шифруется.