Что такое вебхук — на пальцах
Вебхук — это HTTP‑запрос (POST), который сервер Oblodai сам присылает вам, когда что‑то
произошло (например, счёт оплачен). Endpoint (он же url_callback, он же «callback URL») — это
ваш собственный адрес и обработчик, которые вы должны написать: маршрут на вашем сервере,
принимающий этот POST. То есть вебхук работает так: покупатель оплатил → Oblodai делает POST на
ваш URL → ваш код принимает его и помечает заказ оплаченным.
На CMS‑модуле это уже сделано. Если вы используете готовый CMS-модуль
(WooCommerce и т. п.) — регистрировать вебхук и писать обработчик не нужно, модуль делает всё
сам. Инструкция ниже — для собственной интеграции на SDK/HTTP.
Что нужно подготовить до регистрации
- Публичный HTTPS‑URL, доступный из интернета, отвечающий на
POST. Пример в коде ниже (https://shop.example/oblodai/callback) — подставьте свой реальный адрес. - Ваш обработчик должен возвращать HTTP
2xx(обычно200). Любой не‑2xx (или падение) Oblodai считает неудачной доставкой и будет повторять. - Локальная разработка: на
localhostвебхуки не дойдут (и SSRF‑проверка запретит приватные адреса). Поднимите туннель — ngrok (ngrok http 8000→ адресhttps://xxxx.ngrok-free.app), Cloudflare Tunnel или localtunnel — и регистрируйте выданный публичный HTTPS‑адрес.
Зарегистрировать endpoint
Один раз на проект зарегистрируйте HTTPS‑URL и сохраните выданный Особенности:
secret. В примерах call() —
подписанная обёртка запроса (её определение — в Как подписать запрос; проще
взять SDK):Этот эндпоинт — единственный, кто отвечает
201 Created без конверта state/result.- У проекта один активный endpoint. Повторный вызов заменит URL и выдаст новый секрет.
- URL проходит SSRF‑проверку: приватные и локальные адреса запрещены.
- Индивидуальный
url_callbackконкретного платежа/выплаты доставляется на свой URL, но подписывается секретом endpoint проекта — то есть endpoint всё равно должен быть зарегистрирован.
POST /v1/webhooks.Проверять подпись
Обрабатывать идемпотентно
Доставка — как минимум один раз. Один и тот же вебхук может прийти несколько раз (в том числе
после
payment/resend). Обязательно:- Дедуплицируйте по
uuid+status. Если такое событие уже обработано — верните2xxи выйдите (no‑op). - Не полагайтесь на порядок доставок. Опирайтесь на
status/is_final, а не на очерёдность. - Отвечайте
2xxтолько после успешной обработки. Любой не‑2xx — сигнал повторить доставку.
Какие события приходят
Ретраи
Если ваш endpoint не ответил2xx, диспетчер повторяет доставку с экспоненциальным backoff: от 10 с с
удвоением, потолок 1 час, до 12 попыток (в сумме ~3,5 часа). Исчерпав попытки — статус dead, виден в
журнале доставок.
Проверьте себя до боя
Прогоните пробное событие, не дожидаясь реальной оплаты — см. Отладка вебхуков.Связанные страницы
Объект вебхука и проверка подписи
Безопасность вебхуков за пределами подписи
replay‑защита, перепроверка статуса.