Симптомы проблемы
Участник сообщает, что оплатил билет, но:
- Статус регистрации — «Ожидает оплаты»
- Письмо с билетом не пришло
- В списке участников статус платежа —
pending
Чаще всего причина — webhook от платёжного шлюза не был доставлен или не был обработан evntflo.
Шаг 1. Проверьте лог доставки webhook
evntflo ведёт лог всех входящих webhook-запросов:
- Откройте Настройки → Платежи.
- Выберите шлюз (ЮKassa или Точка).
- Перейдите на вкладку «Webhook-лог».
В логе отображаются:
- Дата и время запроса
- Тип события (
payment.succeeded,payment.canceled,refund.succeeded) - HTTP-код ответа evntflo
- Тело запроса (для диагностики)
- Статус обработки (успех / ошибка)
Возможные результаты
| Ситуация | Что это значит | Что делать |
|---|---|---|
| Webhook в логе отсутствует | Шлюз не отправил или не смог доставить | Перейдите к шагу 2 |
Webhook есть, код 200 | Обработан успешно | Проверьте, что payment_id совпадает с проблемным платежом |
Webhook есть, код 4xx | Ошибка валидации (неверная подпись, неизвестный формат) | Перейдите к шагу 4 |
Webhook есть, код 5xx | Внутренняя ошибка evntflo | Перейдите к шагу 5 |
Шаг 2. Проверьте настройки webhook в шлюзе
Войдите в личный кабинет платёжного шлюза и проверьте:
ЮKassa
- Откройте «Настройки» → «HTTP-уведомления».
- Убедитесь, что webhook URL совпадает:
https://app.evntflo.com/webhooks/yookassa/{shopId} - Проверьте, что выбраны все необходимые события:
payment.succeededpayment.canceledrefund.succeeded
Точка
- Откройте «Интеграция» → «Уведомления».
- Убедитесь, что webhook URL совпадает:
https://app.evntflo.com/webhooks/tochka/{merchantId} - Проверьте фильтры событий.
Частые ошибки в URL
- Пропущен
https://(указанhttp://— шлюзы требуют HTTPS) - Лишний слэш в конце URL
- Неверный
shopIdилиmerchantIdв пути - URL от старого подключения (если вы переподключали шлюз)
Шаг 3. Проверьте доступность webhook-эндпоинта
Если URL правильный, но webhook не доставляется, возможные причины:
- Firewall или CDN блокирует входящие POST-запросы от шлюза
- Таймаут: evntflo не успел ответить за отведённое время (шлюзы обычно ждут 10–30 секунд)
- DNS-проблемы: домен не резолвится на стороне шлюза
Для проверки используйте тестовый webhook из личного кабинета шлюза (если доступен) или запросите повторную отправку.
Шаг 4. Ошибка валидации (4xx)
Если webhook пришёл, но evntflo вернул ошибку 4xx:
| Код | Причина | Решение |
|---|---|---|
400 | Невалидное тело запроса | Проверьте формат уведомлений в шлюзе. Убедитесь, что выбран формат JSON, а не XML |
401 | Неверная подпись запроса | Убедитесь, что secretKey в evntflo актуален. Если вы перегенерировали ключ в шлюзе, обновите его и в evntflo |
404 | Неверный путь webhook URL | Проверьте URL — возможно, shopId / merchantId указан неверно |
409 | Дублирующий webhook (уже обработан) | Это нормальное поведение — idempotency-защита сработала. Платёж уже обработан |
Шаг 5. Внутренняя ошибка (5xx)
Если webhook получен, но evntflo вернул 5xx — это временная ошибка на стороне evntflo. В большинстве случаев:
- Шлюз автоматически повторит доставку (см. политику ретраев ниже).
- При повторной попытке проблема обычно решается.
- Если ошибка повторяется — обратитесь в поддержку evntflo.
Политика повторной доставки
| Шлюз | Количество попыток | Интервалы |
|---|---|---|
| ЮKassa | до 10 | Экспоненциальная задержка: 1 с, 5 с, 30 с, 2 мин, 10 мин, 30 мин, 1 ч, 3 ч, 6 ч, 12 ч |
| Точка | до 5 | Фиксированный интервал: каждые 5 минут |
Если все попытки исчерпаны, используйте ручной повтор.
Ручной повтор и подтверждение
Ручной повтор webhook
В логе webhook нажмите «Повторить» рядом с неуспешной записью. evntflo повторно обработает тело webhook-запроса.
Ручное подтверждение оплаты
Если webhook восстановить невозможно, но вы видите успешный платёж в личном кабинете шлюза:
- Откройте мероприятие → «Участники».
- Найдите запись с зависшим статусом.
- Нажмите «Действия» → «Подтвердить оплату вручную».
- Укажите причину (для аудита).
Ручное подтверждение обновляет статус регистрации и отправляет участнику письмо с билетом.
Тестирование webhook
Чтобы убедиться, что webhook работает корректно, до или после настройки:
Тестовый платёж
- Создайте тестовое мероприятие с платным билетом.
- Подключите шлюз в тестовом режиме.
- Оплатите тестовой картой (
4111 1111 1111 1111). - Проверьте webhook-лог — должна появиться запись с кодом
200. - Убедитесь, что статус регистрации обновился на «Оплачено».
Тестовый webhook из шлюза
Некоторые шлюзы позволяют отправить тестовый webhook вручную:
- ЮKassa: в разделе «HTTP-уведомления» кнопка «Отправить тестовое уведомление»
- Точка: обратитесь в поддержку Точки для отправки тестового уведомления
Профилактика
Чтобы избежать проблем с webhook:
- При смене API-ключей в шлюзе сразу обновляйте их в evntflo
- Не удаляйте и не меняйте webhook URL без необходимости
- Периодически проверяйте webhook-лог на наличие ошибок
- При переподключении шлюза всегда проводите тестовый платёж