На странице
Доставка и повторы
Учтите 11 попыток доставки вебхука примерно за 16 часов, отсекайте повторы, разбирайте ошибки и повторяйте событие после восстановления.
Если ваш адрес вернёт статус не из группы 2xx или превысит таймаут 10 секунд, Paymos повторяет доставку с удвоением задержки. Всего 11 попыток (1 начальная + 10 повторов) примерно за 16 часов.
Расписание повторов
| Попытка | Задержка после предыдущей | Накопленная задержка |
|---|---|---|
| 1 | сразу | 0 |
| 2 | 1 мин | 1 мин |
| 3 | 2 мин | 3 мин |
| 4 | 4 мин | 7 мин |
| 5 | 8 мин | 15 мин |
| 6 | 16 мин | 31 мин |
| 7 | 32 мин | ~1 час |
| 8 | 1 час | ~2 часа |
| 9 | 2 часа | ~4 часа |
| 10 | 4 часа | ~8 часов |
| 11 | 8 часов | ~16 часов |
После 11 попыток событие помечается как неудавшееся. Такие события можно отправить повторно из дашборда — повторная отправка обнуляет счётчик попыток и снова ставит событие в очередь на доставку.
Идемпотентность
Доставка идёт не реже одного раза. Одно и то же событие с тем же event_id может прийти несколько раз — при повторах это нормально. Обработчик должен быть идемпотентным: сохраняйте уже обработанные event_id, а на повторы отвечайте 200 OK, ничего не делая.
Что считается успешной доставкой
- Ответ HTTP
2xxза 10 секунд → доставка успешна - HTTP
4xxили5xx→ ошибка, будет повтор - Отказ в соединении, ошибка DNS, ошибка TLS → ошибка, будет повтор
- Ответ позже 10 секунд → ошибка, будет повтор (ваш обработчик может получить дубль)
Возвращайте 2xx, как только событие сохранено на вашей стороне. Тяжёлую обработку откладывайте в фоновую очередь, чтобы обработчик вебхука укладывался в таймаут.