WATA — платежный шлюз с платежной формой для банковских карт и СБП. В меню оплаты бота появляется кнопка «Карта / СБП (WATA)».
Требования
- Аккаунт мерчанта WATA (wata.pro) с созданным терминалом
- Токен доступа терминала
- Публичный HTTPS-домен бота для приема вебхуков
Как это работает
- Пользователь выбирает тариф и нажимает «Карта / СБП (WATA)» — бот создает одноразовую платежную ссылку через API WATA (
POST /api/h2h/links) в рублях. Номер покупки передается в ней какorderId. - Пользователь оплачивает картой или через СБП на форме WATA, после чего возвращается в бота.
- WATA отправляет вебхук на адрес
WATA_WEBHOOK_URL. Бот проверяет RSA-подпись из заголовкаX-Signatureпо публичному ключу WATA. - Если платеж успешен (
Paid), а сумма и валюта совпадают с покупкой, бот активирует подписку через Remnawave.
Отклоненная попытка не закрывает ссылку — пользователь может повторить оплату на той же форме. Возвраты бот принимает, но как оплату не обрабатывает.
Важно
Без настроенного вебхука платежи не будут подтверждаться автоматически.
Инструкции по настройке
Шаг 1: Получите токен доступа
- Зарегистрируйтесь на wata.pro и создайте терминал
- В личном кабинете откройте Терминалы → ваш терминал → токены и выпустите токен
Срок действия токена
Токен выпускается на срок от 1 до 12 месяцев. После его истечения API WATA отвечает 401 и бот перестает создавать ссылки на оплату — перевыпустите токен заранее.
Шаг 2: Настройте переменные окружения
WATA_ENABLED=true
WATA_ACCESS_TOKEN=ваш_токен
WATA_BASE_URL=https://api.wata.pro/api/h2h
WATA_WEBHOOK_URL=/webhook/wata/СЛУЧАЙНЫЙ_СЕКРЕТСлучайный секрет для пути вебхука сгенерируйте командой:
openssl rand -hex 32Для тестов используйте песочницу: WATA_BASE_URL=https://api-sandbox.wata.pro/api/h2h и токен терминала песочницы.
Шаг 3: Зарегистрируйте вебхук в WATA
В настройках вебхуков терминала в личном кабинете WATA укажите полный URL:
https://ваш-домен.com/webhook/wata/СЛУЧАЙНЫЙ_СЕКРЕТШаг 4: Перезагрузите бота
docker compose down && docker compose up -dПри первом запуске бот применит миграцию базы данных 000007_add_wata.
Шаг 5: Протестируйте платеж
- Отправьте
/startботу - Выберите подписку
- Нажмите «Карта / СБП (WATA)»
- Оплатите и убедитесь, что подписка активировалась
Переменные конфигурации
| Переменная | Обязательна | Описание |
|---|---|---|
WATA_ENABLED | да | Включить/отключить WATA (true/false) |
WATA_ACCESS_TOKEN | да | Токен доступа терминала |
WATA_WEBHOOK_URL | да | Путь вебхука, например /webhook/wata/секрет |
WATA_BASE_URL | нет | Адрес API. По умолчанию https://api.wata.pro/api/h2h, песочница — https://api-sandbox.wata.pro/api/h2h |
Сумма платежа берется из цен тарифов PRICE_* в рублях.
Безопасность вебхука
Бот проверяет каждый входящий вебхук:
- Подпись
X-Signature(SHA512withRSA по телу запроса) должна сходиться с публичным ключом WATA — иначе запрос отклоняется с кодом 401. Ключ бот получает из API WATA и кэширует; если WATA сменит ключ, бот подхватит новый автоматически - Обрабатываются только успешные платежи по неоплаченной покупке WATA, у которых валюта совпадает, а сумма не меньше стоимости покупки
- Используйте длинный случайный сегмент в пути
WATA_WEBHOOK_URL
Устранение неполадок
Платеж завис в статусе «ожидание»
- Проверьте, что URL вебхука зарегистрирован в настройках терминала WATA и совпадает с
WATA_WEBHOOK_URL - Проверьте, что домен бота доступен извне по HTTPS
- Просмотрите логи бота:
docker compose logs -f remnawave-telegram-shop-bot
Кнопка WATA не отображается
- Убедитесь, что
WATA_ENABLED=true - Перезапустите бота после изменения
.env
Бот не может создать ссылку на оплату
- Проверьте, что токен не истек — при истекшем токене API WATA отвечает
401 - Проверьте, что
WATA_BASE_URLсоответствует токену: боевой токен не работает с песочницей, и наоборот
Вебхук возвращает 401
- Подпись не прошла проверку. Убедитесь, что вебхук приходит от того же окружения WATA (боевое или песочница), что указано в
WATA_BASE_URL
Поддержка
- WATA: wata.pro
- Проблемы: Сообщайте на GitHub