RU
VPN-панели

Криптоплатежи для Remnawave

Приём USDT для VPN-панели Remnawave. Небольшой сервис создаёт счёт SnapEX Pay по тарифу и отправляет клиента на страницу оплаты. Когда SnapEX Pay подтверждает платёж, сервис создаёт пользователя Remnawave или продлевает существующего и возвращает ссылку на подписку. Работает рядом с панелью в Docker; магазин или Telegram-бот управляют им через HTTP API из двух методов.

Скачать модуль

Бесплатно. Версия 1.0.0.

Что умеет модуль

  • Страница оплаты SnapEX Pay: USDT в TRON (TRC20), Ethereum (ERC20) или BNB Chain (BEP20); другие монеты появляются, если для суммы есть маршрут обмена.
  • После оплаты создаётся пользователь Remnawave (ACTIVE, со сроком, лимитом трафика, необязательным Telegram ID и internal squads) или продлевается существующий. Продление добавляет дни тарифа к более поздней дате: сейчас или текущий срок окончания.
  • Вебхуки проверяются по HMAC-SHA256 с окном 5 минут, затем статус счёта перечитывается из API SnapEX Pay — пользователь создаётся только по оплаченному счёту.
  • Идемпотентность: даже если один вебхук пришёл дважды в один момент, пользователь создаётся один раз.
  • Тарифы — одной переменной окружения; данные — один файл SQLite, без внешней базы.

Установка

  1. В Remnawave откройте Remnawave Settings → API Tokens и создайте токен (не JWT входа администратора — панель его для API не принимает). Скопируйте UUID internal squads для новых пользователей.
  2. В кабинете мерчанта SnapEX Pay создайте API-ключ с правами invoices.read и invoices.write.
  3. Скачайте и распакуйте архив, выполните cp .env.example .env и задайте SNAPEX_API_KEY, REMNAWAVE_URL, REMNAWAVE_TOKEN, REMNAWAVE_SQUADS и длинный случайный API_TOKEN.
  4. Запустите: docker compose up -d, проверьте curl -s http://127.0.0.1:8080/health и поставьте сервис за HTTPS reverse proxy.
  5. В кабинете добавьте вебхук https://<ваш сервис>/webhook, впишите секрет whsec_… в SNAPEX_WEBHOOK_SECRET и перезапустите.
  6. Из бэкенда или бота вызывайте POST /v1/checkout с Authorization: Bearer <API_TOKEN>, отправляйте клиенту pay_url и проверяйте GET /v1/orders/{invoice_id}, чтобы получить ссылку на подписку.

Настройки

SNAPEX_API_KEY, SNAPEX_WEBHOOK_SECRETAPI-ключ мерчанта (invoices.read, invoices.write) и секрет подписи вебхука (whsec_…).
SNAPEX_ENVIRONMENT, SNAPEX_FEE_ONlive или test (тестовые счета без реальных денег); кто платит комиссию — merchant или customer.
REMNAWAVE_URL, REMNAWAVE_TOKENАдрес панели (или http://remnawave:3000 в общей Docker-сети) и API-токен Remnawave.
REMNAWAVE_SQUADSUUID internal squads для новых пользователей. Без squad у пользователя нет inbound и подписка будет пустой.
API_TOKENBearer-токен, который магазин или бот передаёт в /v1/checkout и /v1/orders/….
PLANSid:дни:usd:байты_трафика через запятую; 0 — без лимита.

Вопросы

Какие версии Remnawave поддерживаются?

Remnawave 2.2 и новее; проверено на 3.4.5.

Почему у нового пользователя пустая подписка?

У пользователя без internal squad нет inbound. Впишите UUID squads для новых пользователей в REMNAWAVE_SQUADS; у существующих squads не меняются.

Как работает продление?

Оплата для существующего имени добавляет дни тарифа к более поздней дате: сейчас или текущий срок окончания. Лимит трафика ставится по новому тарифу.

Может ли один платёж создать пользователя дважды?

Нет. Даже если один вебхук пришёл дважды в один момент, пользователь создаётся один раз.

Есть готовый Telegram-бот?

Да, отдельный Telegram-бот SnapEX Pay для Marzban, 3x-ui и Remnawave. Этот сервис нужен, если у вас уже есть свой бот или магазин.

Готовы принимать крипту?

Создайте аккаунт мерчанта, получите API-ключ и подключите модуль. 1% с платежа, без абонентской платы.