Колбэки

Уведомления на callbackUri при смене статуса. Payload совпадает по смыслу с Статус платежа.

Колбэки

При смене статуса платежа система может отправить колбэк на callbackUri указанный при создании платежа. Колбэк содержит подписанный payload, аналогичный ответу "Статус платежа" эндпоинта. В заголовке передаётся подпись.

Возможные значения state:

  • created - платёж создан без инвойса (метод не выбран, пользователь перенаправляется на выбор метода)

  • pending- платёж успешно создан с выбранным методом!

  • dispute- спор/апелляция

  • in_check- проверка платежа инициирована пользователем или выплата в процессе.

  • finished- платёж успешно завершён (финальный статус).

  • canceled- отменён пользователем или шлюзом (финальный статус для выплат).

  • expired- срок платежа истёк.

  • failed- не удалось создать платёж: подходящий реквизит не найден (финальный статус)




Проверка подписи колбэков

Каждый колбэк содержит заголовок Signature подписанный вашим секретным ключом. Важно проверять подпись колбэка, чтобы исключить уязвимости.

Пример проверки колбэка на JavaScript:

const crypto = require('crypto');
// callbackBody - raw body string received from callback request
const signature = callbackHeaders['Signature'];
const expectedSignature = crypto.createHmac('sha256', secretKey).update(callbackBody).digest('hex');
if (signature === expectedSignature) {
  // Signature is valid - process the callback
} else {
  // Signature is invalid - reject the callback
}


Пример проверки колбэка на PHP:

$callbackBody = file_get_contents('php://input');
$signature = $_SERVER['HTTP_SIGNATURE'] ?? '';
if($signature === hash_hmac('sha256', $callbackBody, $secretKey))
{
  // Signature is valid - you can trust this callback
}



Примечания

  • Обработка ошибок: Всегда проверяйте status: false в ответе для корректной обработки ошибок.

  • Ограничение частоты запросов: Слишком частые запросы могут привести к rate limiting. Обрабатывайте ответы HTTP 429.