Webhook платежной системы должен доходить до сервера без браузера и JavaScript. Если Cloudflare показывает challenge, платежный сервис не может подтвердить оплату.
В итоге клиент оплатил, а сайт видит заказ как неоплаченный. Это ломает выдачу доступа, бронирование и уведомления.
Коротко: для webhook нужны отдельные правила безопасности, а не обычная браузерная проверка.Почему возникает такая проблема
Challenge включается из-за WAF, bot fight mode, security level, правил по стране, подозрительного user-agent или отсутствия отдельного исключения для endpoint платежного webhook.
Что проверить в первую очередь
- какой URL принимает webhook
- что видит платежная система в ответе
- какое правило Cloudflare сработало
- есть ли IP-диапазоны платежного сервиса
- проверяется ли подпись webhook на сервере
Как я подхожу к задаче
Я настраиваю исключение точечно для webhook, сохраняя защиту для остального сайта.
- нахожу событие в Cloudflare logs
- проверяю endpoint webhook
- добавляю allowlist или skip rule
- оставляю проверку подписи на backend
- делаю тестовый webhook и проверяю статус заказа
Что подготовить для быстрой диагностики
- домен и URL webhook
- название платежной системы
- доступ к Cloudflare
- пример неоплаченного заказа после оплаты
- документацию по webhook или IP платежного сервиса
Сроки и аккуратность
Если Cloudflare просто блокирует endpoint, настройка быстрая. Если backend тоже неверно проверяет подпись или статус, нужно исправить обработчик webhook.
Чего лучше не делать
Не отключайте Cloudflare целиком ради webhook. Лучше сделать точное правило для нужного URL и источника.
FAQ
Можно ли разрешить только IP платежной системы?
Да, если сервис публикует актуальные IP-диапазоны.
Нужна ли проверка подписи webhook?
Да, это важнее, чем полагаться только на IP.
Почему браузер открывает URL, а webhook не приходит?
Браузер проходит challenge, а сервер платежной системы нет.
Можно ли логировать webhook?
Да, это помогает быстро отличить блокировку Cloudflare от ошибки backend.
Нужна похожая задача?
Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку на проект, опишите проблему и укажите, какие доступы уже есть. Я посмотрю задачу, предложу безопасный план и скажу, с чего лучше начать.
Итог
После настройки платежные webhook должны проходить через Cloudflare без challenge, а сайт должен корректно менять статус заказа после оплаты.