# Тестирование вебхуков

> Проверьте реальный путь тестового инвойса и доставки вебхука через интерактивную песочницу документации.

**Консоль** проходит настоящий путь тестового режима. Она создаёт инвойс через Merchant API, подтверждает выбор способа оплаты, запускает выбранный тестовый результат и ждёт, пока служба доставки вызовет ваш активный адрес.

Выдуманное событие напрямую на ваш URL отсюда не уходит. Оно идёт через ту же очередь, подпись, таймаут, повторы и код доставки, что и обычные операции тестового режима.

## Требования

- Переключите дашборд в тестовый режим.
- Выберите проект хотя бы с одним активным тестовым токеном.
- Создайте активный тестовый Payment-ключ.
- Зарегистрируйте активный тестовый адрес вебхука.
- Откройте доступ к этому HTTPS-адресу из интернета.

В Консоли отправка в рабочий режим намеренно отключена.

## Доступные сценарии

| Сценарий | Итоговое событие |
|----------|------------------|
| Точная оплата | `invoice.paid` |
| Переплата | `invoice.paid_over` |
| Недоплата | `invoice.underpaid` |
| Отмена | `invoice.cancelled` |

Откройте [**Дашборд → Разработчик → Документация**](/developers/docs?docs=webhooks/testing) — та же страница, но с вкладкой **Консоль** над инструкцией. Задайте **Тип события**, сумму и валюту, затем нажмите **Симулировать**. Панель ответа покажет последний вызов Merchant API. Статус доставки появится после попытки отправки вебхука.

## Диагностика теста

Откройте **Дашборд → Разработчик → Вебхуки**, чтобы посмотреть событие и все попытки доставки. Сначала сравните:

1. `X-Webhook-Id` и `event_id` из тела события.
2. Полученное исходное тело запроса и байты, переданные в проверку подписи.
3. HTTP-статус и время ответа вашего адреса — с [политикой доставки](/ru/docs/webhooks/retry.md).
4. Тестовый секрет адреса и секрет, который использует ваш сервер.

После исправления обработчика отправьте событие повторно из его карточки. Переотправка сохраняет тот же `event_id`, поэтому защита от дублей продолжает работать.
