Криптоплатежи для 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, без внешней базы.
Установка
- В Remnawave откройте Remnawave Settings → API Tokens и создайте токен (не JWT входа администратора — панель его для API не принимает). Скопируйте UUID internal squads для новых пользователей.
- В кабинете мерчанта SnapEX Pay создайте API-ключ с правами
invoices.readиinvoices.write. - Скачайте и распакуйте архив, выполните
cp .env.example .envи задайтеSNAPEX_API_KEY,REMNAWAVE_URL,REMNAWAVE_TOKEN,REMNAWAVE_SQUADSи длинный случайныйAPI_TOKEN. - Запустите:
docker compose up -d, проверьтеcurl -s http://127.0.0.1:8080/healthи поставьте сервис за HTTPS reverse proxy. - В кабинете добавьте вебхук
https://<ваш сервис>/webhook, впишите секретwhsec_…вSNAPEX_WEBHOOK_SECRETи перезапустите. - Из бэкенда или бота вызывайте
POST /v1/checkoutсAuthorization: Bearer <API_TOKEN>, отправляйте клиентуpay_urlи проверяйтеGET /v1/orders/{invoice_id}, чтобы получить ссылку на подписку.
Настройки
| SNAPEX_API_KEY, SNAPEX_WEBHOOK_SECRET | API-ключ мерчанта (invoices.read, invoices.write) и секрет подписи вебхука (whsec_…). |
|---|---|
| SNAPEX_ENVIRONMENT, SNAPEX_FEE_ON | live или test (тестовые счета без реальных денег); кто платит комиссию — merchant или customer. |
| REMNAWAVE_URL, REMNAWAVE_TOKEN | Адрес панели (или http://remnawave:3000 в общей Docker-сети) и API-токен Remnawave. |
| REMNAWAVE_SQUADS | UUID internal squads для новых пользователей. Без squad у пользователя нет inbound и подписка будет пустой. |
| API_TOKEN | Bearer-токен, который магазин или бот передаёт в /v1/checkout и /v1/orders/…. |
| PLANS | id:дни: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% с платежа, без абонентской платы.