Общая информация

IP адреса используемые для отправки уведомлений
193.141.53.171
193.141.53.176
191.101.112.123
191.101.112.154
185.168.250.38
163.198.213.130

Лимиты

  • Повторные уведомления: Если сервер не подтвердит получение callback (например, если ваш сервер не вернёт HTTP-ответ с кодом 200 или 429), система будет повторно отправлять уведомление с задержкой в N минут, где N - количество уже совершённых попыток.

  • Общее количество попыток: Если после нескольких попыток уведомление не было успешно доставлено, оно будет помечено как не доставленное, и дальнейшие попытки прекращаются. Максимальное количество попыток составляет 10.

Условия

  1. Формат уведомлений: Все callback уведомления отправляются с использованием POST-запросов в формате JSON.

  2. Гарантированное получение уведомлений: Для успешной интеграции необходимо, чтобы ваш сервер всегда был готов принимать и корректно обрабатывать callback уведомления. Для подтверждения успешного приёма сервер должен возвращать HTTP-ответ с кодом 200 или 429.

  3. Таймаут обработки: Ваш сервер должен обработать запрос в течение 30 секунд. Если обработка займёт больше времени, система примет это за неуспех и повторит попытку отправки уведомления.

  4. Подтверждение подписи: Для каждой callback-операции мы генерируем и отправляем уникальную подпись в поле signature. Вы должны сгенерировать аналогичную подпись на своей стороне в соответствии с указанным форматом и сравнить её с подписью, полученной в уведомлении, чтобы убедиться в подлинности данных.

  5. Защита от дублирования: Возможны случаи, когда уведомление может быть отправлено несколько раз (например, если предыдущий HTTP-ответ не был зафиксирован). Ваш сервер должен быть готов к обработке таких дубликатов, избегая повторной обработки одной и той же операции.

Безопасность

Все callback уведомления содержат поле signature, в котором передаётся сгенерированная нашей системой подпись. Для безопасности важно сгенерировать подпись на вашей стороне в соответствии с заданным форматом и сверить её с подписью, полученной в уведомлении.

Пример валидации signature

<?php
// Получение данных из запроса
$content = json_decode(file_get_contents('php://input'), true);

$id = $content["id"];
$signature = $content["signature"];

$salt = "Salt кассы"; // Секретный ключ salt

// Генерация хеша
$hash = sha1($id . ":" . $salt);

// Безопасное сравнение подписи callback
if (!hash_equals($hash, $signature)) {
    exit("Invalid signature!");
}

echo "Signature is valid!";

Last updated