Проверяйте подпись исходного тела
Используйте webhook-секрет и исходные байты запроса. Не пересобирайте JSON перед проверкой: форматирование меняет подписанные данные. Проверяйте timestamp и отклоняйте устаревшие запросы. Подпись вычисляется как HMAC-SHA256 от timestamp, точки и исходного тела. Формат заголовков и пример проверки описаны в документации API.
Повторная доставка — нормальная ситуация
После временной ошибки CRYPTOSHA повторяет доставку. Сохраните идентификатор события и обрабатывайте бизнес-действие атомарно вместе с отметкой об обработке. Одинаковое событие не должно второй раз выдавать лицензию или зачислять внутренний баланс.
Учитывайте версию состояния
Уведомление содержит версию счета. Не применяйте более старое состояние поверх нового. При спорной ситуации запросите актуальное состояние через API. Событие решения продавца не заменяет факт подтвержденного перевода в блокчейне.
Протестируйте недоставку и восстановление
Проверьте поведение своего обработчика при временной ошибке и повторной доставке. Возвращайте успешный HTTP-код после надёжного сохранения события. В кабинете доступны история попыток и ручной повтор. События с test_mode=true не должны выдавать настоящие заказы.