RU

Приём криптоплатежей для VPN-сервиса: Remnawave, Marzban, 3X‑UI, Xboard и Telegram-бот

7 мин чтения

Приём криптоплатежей для VPN-сервиса: Remnawave, Marzban, 3X‑UI, Xboard и Telegram-бот

Эта инструкция — для владельца VPN-сервиса, который продаёт подписки через сайт, панель или Telegram-бота и хочет принимать криптовалюту. Важно не только получить платёж, но и сразу выдать доступ: создать пользователя в панели или продлить его и отдать клиенту ссылку на подписку — без ручной работы.

Зачем крипта: оплата не зависит от того, в какой стране выпущена карта клиента и какой у него банк. SnapEX Pay не требует KYC ни от вас, ни от ваших клиентов и не ограничивает страны. Правила приёма криптовалюты в разных странах разные — уточните у юриста, как они касаются вашего сервиса.

  • 1%комиссия с платежа — из суммы или сверху для клиента
  • $0,50минимальный счёт в USDT TRC20, ERC20, BEP20 — хватает и на тариф за пару долларов
  • 70+монет на странице оплаты, вам всё приходит в USDT

Как проходит оплата VPN-подписки

От выбора тарифа до ссылки на подписку

Клиентвыбирает тариф в боте или на сайте
Страница оплатыUSDT или другая монета
Вебхукподпись HMAC-SHA256
Панельпользователь создан или продлён
Подпискассылка уходит клиенту

Модуль не доверяет телу вебхука: получив уведомление, он заново запрашивает счёт в API SnapEX Pay и выдаёт доступ только при статусе paid. Сервисы для Remnawave, Marzban, 3X‑UI и бот выдают доступ один раз, даже если один и тот же вебхук пришёл дважды или две копии пришли одновременно.

Шаг 1. Выберите модуль под свою панель

  • Docker-сервис

    Remnawave

    Создаёт активного пользователя со сроком, лимитом трафика и внутренними сквадами или продлевает существующего, отдаёт ссылку на подписку.

    Remnawave 2.2+ и 3.x · архив на pay.snapex.pro

  • Docker-сервис

    Marzban

    Новый пользователь получает все протоколы, для которых в панели есть inbound. Существующий продлевается от текущей даты окончания.

    Версия 1.1.0 · архив на pay.snapex.pro и GitHub

  • Docker-сервис

    3X‑UI

    Своего биллинга у 3X‑UI нет — сервис добавляет клиента в inbound или продлевает его. UUID и subId не меняются, конфиг клиента продолжает работать.

    3X‑UI 2.x и 3.x · архив на pay.snapex.pro

  • Плагин

    Xboard и V2Board

    Ставится через менеджер плагинов Xboard (для V2Board — класс в app/Payments). Клиент уходит на страницу оплаты, заказ открывается сам.

    Версия 1.3.0 · архив на pay.snapex.pro и GitHub

  • Бот

    Telegram VPN-бот

    Тарифы — кнопками в чате, кнопка ведёт на страницу оплаты, ссылка на подписку приходит в тот же чат. Работает с Marzban, 3X‑UI и Remnawave.

    Бот на вашем сервере · архив на pay.snapex.pro

  • API

    Своя панель или сайт

    Счёт создаётся одним запросом к REST API, в ответе — ссылка на страницу оплаты. О статусе сообщает подписанный вебхук.

    Документация и тестовый режим — те же, что у модулей

Сервисы для Remnawave, Marzban и 3X‑UI — небольшой контейнер рядом с панелью. Ваш бот или сайт просит у него ссылку на оплату (POST /v1/checkout), а статус заказа и ссылку на подписку забирает через GET /v1/orders/{invoice_id}. Если бота ещё нет — возьмите готовый Telegram VPN-бот.

Шаг 2. Заведите аккаунт мерчанта и API-ключ

  • Зарегистрируйтесь на pay.snapex.pro. Аккаунт обменника snapex.pro подходит — это один аккаунт. Документы не нужны.
  • Создайте API-ключ с правами invoices.read и invoices.write.
  • Добавьте адрес вебхука. SnapEX Pay доставляет вебхуки только на публичный адрес https://, поэтому поставьте контейнер за Caddy, nginx или Traefik. Секрет подписи сохраните в SNAPEX_WEBHOOK_SECRET.
  • Каждое уведомление подписано HMAC-SHA256 с меткой времени. Если ваш сервер не ответил, SnapEX Pay повторит доставку — всего до 5 попыток.

Шаг 3. Запустите модуль и задайте тарифы

Для Remnawave, Marzban, 3X‑UI и бота порядок один: скачайте архив со страницы модуля, заполните .env, выполните docker compose up -d и проверьте /health. Тарифы задаются одной переменной в формате id:дни:цена_usd:трафик_байт, 0 — безлимит:

PLANS=month:30:5.00:0,quarter:90:12.00:107374182400

Здесь месяц стоит $5 без лимита, квартал — $12 со 100 ГБ трафика.

  • Remnawave: токен берите в Remnawave Settings → API Tokens, не JWT админского входа. В REMNAWAVE_SQUADS укажите UUID внутренних сквадов — без сквада у пользователя нет inbound и подписка будет пустой.
  • Xboard: Плагины → загрузить ZIP → Установить → Включить «SnapEX Pay». Если цены в панели не в долларах, задайте курс пересчёта. Все настройки — в гайде по Xboard и V2Board.

Шаг 4. Проверьте покупку на тестовом счёте

Поставьте SNAPEX_ENVIRONMENT=test (в Xboard — Environment = test в настройках способа оплаты) и купите тариф сами. Тестовый счёт подтверждается сам примерно через 10 секунд после выбора монеты, реальные деньги не двигаются. Проверьте, что пользователь появился в панели, а ссылка на подписку дошла до клиента. Затем верните live: в Xboard тестовый счёт не откроет заказ, пока способ оплаты в боевом режиме.

Шаг 5. Включите боевой режим и настройте вывод

  • Комиссия 1%. SNAPEX_FEE_ON=merchant — удерживается из суммы, customer — добавляется клиенту сверху.
  • Монеты под дешёвые тарифы. USDT в сетях TRC20, ERC20, BEP20, а также LTC, ETH и TRX — от $0,50 за счёт; BTC — на небольшие суммы, если позволяет комиссия сети. Остальные монеты и USDT в Solana и других сетях — в счетах от $8.
  • Только полная оплата. Доступ модуль выдаёт за счёт со статусом paid. При недоплате счёт ждёт доплату на тот же адрес, иначе закрывается как частично оплаченный — пришедшая сумма зачисляется на ваш баланс.
  • Срок счёта — 30 минут по умолчанию, можно от 1 минуты до 24 часов.
  • Вывод — баланс в USDT, вывод из кабинета на криптоадрес без холда. Сервисной комиссии за вывод нет, только сетевая; минимум — от $0,50 до $10 в зависимости от монеты.

Минимальная сумма счёта по монетам

  • USDT TRC20 / ERC20 / BEP20, LTC, ETH, TRXот $0,50
  • Остальные монеты и сетиот $8

Шкала — от 0 до $10. Тариф за $2–5 оплачивается в монетах первой строки.

Продления и баланс в боте

Повторная оплата не создаёт второго пользователя: дни добавляются к текущей дате окончания, а если подписка уже истекла — отсчитываются от момента оплаты. Лимит трафика ставится по оплаченному тарифу — клиент получает свежую квоту. Подробнее — в гайде о продлении VPN-подписок.

Если в вашем боте есть внутренний баланс, клиенту можно выдать постоянный адрес пополнения — через API, по customer_id вашего клиента. Сети: USDT TRC20, ERC20, BEP20 и Polygon, USDC Polygon, BTC, LTC, ETH и TRX. Пополнение зачисляется в USDT за вычетом обычной комиссии, минимум — $0,50, о каждом приходит вебхук. Готовые модули работают со счетами, постоянные адреса подключаются через API.

Чек-лист перед запуском

Перед тем как открыть оплату криптой клиентам

  • Модуль выбран под вашу панель: Remnawave, Marzban, 3X‑UI, Xboard или Telegram-бот.
  • API-ключ с правами invoices.read и invoices.write создан, вебхук указан на адрес https://, секрет подписи сохранён.
  • Тарифы в PLANS (или цены в Xboard) совпадают с теми, что видит клиент.
  • Remnawave: токен API и сквады заданы — подписка нового пользователя не пустая.
  • Тестовая покупка с environment=test прошла: пользователь создан один раз, ссылка дошла.
  • Комиссия: решено, кто платит 1% — вы или клиент.
  • Адрес для вывода USDT готов, минимум вывода для своей монеты известен.

Если у вас уже есть способ оплаты

Отказываться от него не нужно: SnapEX Pay можно поставить вторым способом рядом с текущим — клиент сам выберет, чем платить. Обзор всех модулей для VPN — на странице «Криптоплатежи для VPN-сервисов».

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

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

← Все статьи

Розыгрыш $200

Случайному участнику.

До конца 12дн 10ч 58мин 03сек Подписаться @snapex_pay