Используйте ngrok, чтобы получать webhook-уведомления ApiPay прямо на localhost. Видите запросы в реальном времени — без деплоя.
При разработке у вас нет публичного URL — ApiPay не может отправить webhook на localhost:3000. ngrok создаёт безопасный HTTPS-тоннель к вашему компьютеру и даёт публичный URL, доступный из интернета.
А встроенный Inspect UI (localhost:4040) показывает все входящие запросы — заголовки, тело, статус. Это идеальный инструмент для отладки вебхуков, даже если у вас ещё нет сервера.
Через Homebrew (macOS) или скачайте с сайта:
Зарегистрируйтесь на ngrok.com (бесплатно) и добавьте токен:
Укажите порт, на котором работает ваш локальный сервер (например, 3000):
Скопируйте HTTPS URL — это ваш публичный адрес. Он будет работать, пока ngrok запущен.
ngrok http --url=ваш-домен.ngrok-free.dev 3000 (один бесплатный домен в аккаунте).
Перейдите в ApiPay.kz → Настройки → Подключение и вставьте ngrok URL как Webhook URL:
Нажмите «Сохранить».
В настройках API ключа нажмите кнопку «Тест webhook». ApiPay отправит тестовое событие webhook.test на ваш ngrok URL.
Перейдите в браузере на localhost:4040. Это встроенная панель ngrok — показывает все входящие запросы:
X-Webhook-Signature)| Событие | Когда |
|---|---|
invoice.status_changed |
Статус счёта изменился (pending → paid, cancelled, expired) |
invoice.refunded |
Создан возврат по оплаченному счёту |
subscription.payment_succeeded |
Успешный платёж по подписке |
subscription.payment_failed |
Неуспешный платёж по подписке |
subscription.grace_period_started |
Начался grace-период подписки |
subscription.expired |
Подписка истекла после grace-периода |
webhook.test |
Тестовое событие (кнопка «Тест webhook») |
Каждый запрос содержит заголовок X-Webhook-Signature — HMAC-SHA256 от тела запроса. Секрет вы получаете при создании webhook в настройках.
Если ваш сервер не вернул 2xx, ApiPay повторит запрос до 3 раз с экспоненциальной задержкой (1 мин, 5 мин, 15 мин). После 3 неудач webhook помечается как failed.
Скопируйте и запустите — принимает вебхуки, проверяет подпись, логирует в консоль
node server.js — затем в другом терминале ngrok http 3000. Вебхуки будут приходить и логироваться в консоль.
ngrok http --url=ваш-домен.ngrok-free.dev 3000. Тогда URL не будет меняться и не придётся обновлять webhook URL в ApiPay каждый раз.