Skip to content

WATA — платежный шлюз с платежной формой для банковских карт и СБП. В меню оплаты бота появляется кнопка «Карта / СБП (WATA)».

Требования ​

  • Аккаунт мерчанта WATA (wata.pro) с созданным терминалом
  • Токен доступа терминала
  • Публичный HTTPS-домен бота для приема вебхуков

Как это работает ​

  1. Пользователь выбирает тариф и нажимает «Карта / СБП (WATA)» — бот создает одноразовую платежную ссылку через API WATA (POST /api/h2h/links) в рублях. Номер покупки передается в ней как orderId.
  2. Пользователь оплачивает картой или через СБП на форме WATA, после чего возвращается в бота.
  3. WATA отправляет вебхук на адрес WATA_WEBHOOK_URL. Бот проверяет RSA-подпись из заголовка X-Signature по публичному ключу WATA.
  4. Если платеж успешен (Paid), а сумма и валюта совпадают с покупкой, бот активирует подписку через Remnawave.

Отклоненная попытка не закрывает ссылку — пользователь может повторить оплату на той же форме. Возвраты бот принимает, но как оплату не обрабатывает.

Важно

Без настроенного вебхука платежи не будут подтверждаться автоматически.

Инструкции по настройке ​

Шаг 1: Получите токен доступа

  • Зарегистрируйтесь на wata.pro и создайте терминал
  • В личном кабинете откройте Терминалы → ваш терминал → токены и выпустите токен

Срок действия токена

Токен выпускается на срок от 1 до 12 месяцев. После его истечения API WATA отвечает 401 и бот перестает создавать ссылки на оплату — перевыпустите токен заранее.

Шаг 2: Настройте переменные окружения

bash
WATA_ENABLED=true
WATA_ACCESS_TOKEN=ваш_токен
WATA_BASE_URL=https://api.wata.pro/api/h2h
WATA_WEBHOOK_URL=/webhook/wata/СЛУЧАЙНЫЙ_СЕКРЕТ

Случайный секрет для пути вебхука сгенерируйте командой:

bash
openssl rand -hex 32

Для тестов используйте песочницу: WATA_BASE_URL=https://api-sandbox.wata.pro/api/h2h и токен терминала песочницы.

Шаг 3: Зарегистрируйте вебхук в WATA

В настройках вебхуков терминала в личном кабинете WATA укажите полный URL:

https://ваш-домен.com/webhook/wata/СЛУЧАЙНЫЙ_СЕКРЕТ

Шаг 4: Перезагрузите бота

bash
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