RU
VPN-панели

Криптоплатежи для 3x-ui

Небольшой сервис на вашем сервере, который подключает к панели 3x-ui приём криптовалюты через SnapEX Pay. Бот или сайт запрашивает у него ссылку на оплату, клиент платит в USDT на странице SnapEX Pay, а после оплаты сервис добавляет клиента в ваш inbound или продлевает существующего и возвращает ссылку на подписку. В самой 3x-ui биллинга нет — это платёжный слой между магазином и панелью.

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

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

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

  • У каждого заказа свой счёт SnapEX Pay и pay_url. Оплата в USDT в TRC20, ERC20 или BEP20; на странице оплаты могут появляться и другие монеты, если SnapEX Pay может их предложить.
  • Новое имя — новый клиент в XUI_INBOUND_ID. Существующий продлевается: срок сдвигается вперёд (или от текущего момента, если уже истёк), клиент включается, трафик сбрасывается для тарифов с квотой. UUID и subId не меняются — конфиг клиента продолжает работать.
  • Работает с 3x-ui 2.x и 3.x: проверено на 2.6.0, 2.9.4 и 3.9.0 с inbound VLESS и Trojan.
  • Безопасные вебхуки: подпись HMAC-SHA256 с окном 5 минут, статус счёта всегда перечитывается из API SnapEX Pay, каждый счёт обрабатывается один раз.
  • Тарифы (дни, цена в USD, квота трафика) — одной переменной окружения. Один контейнер: FastAPI и SQLite.

Установка

  1. В кабинете мерчанта SnapEX Pay создайте API-ключ с правами invoices.read и invoices.write.
  2. Скачайте и распакуйте архив, в его папке выполните cp .env.example .env и заполните SNAPEX_API_KEY, API_TOKEN, XUI_URL (с web base path), XUI_USERNAME и XUI_PASSWORD, XUI_INBOUND_ID и XUI_SUB_URL.
  3. Запустите: docker compose up -d, проверьте curl http://localhost:8080/health.
  4. Поставьте сервис за HTTPS (nginx, Caddy, Traefik). В кабинете добавьте вебхук https://<ваш сервис>/webhook, впишите его секрет в SNAPEX_WEBHOOK_SECRET и снова выполните docker compose up -d.
  5. Из бота или бэкенда вызывайте 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_ONСчета live или test; кто платит комиссию сервиса — merchant или customer.
API_TOKENBearer-токен для /v1/checkout и /v1/orders.
XUI_URLАдрес панели вместе с web base path, например https://xui.example.com:2053/secretpath.
XUI_API_TOKENТолько 3x-ui 3.x: API-токен панели вместо логина и пароля (для панелей с двухфакторным входом).
XUI_INBOUND_ID, XUI_SUB_URLInbound для новых клиентов (VLESS, VMess, Trojan, Shadowsocks или Hysteria) и префикс подписки.
PLANSЧерез запятую id:дни:usd:байты_трафика, 0 — без лимита.

Вопросы

Какие версии 3x-ui поддерживаются?

3x-ui 2.x и 3.x: и новый API /panel/api/clients, и старый inbounds/addClient. Проверено на 2.6.0, 2.9.4 и 3.9.0.

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

Передайте то же имя пользователя. Клиент сохраняет UUID и subId, срок сдвигается вперёд, клиент включается, трафик сбрасывается для тарифов с квотой.

У панели двухфакторный вход — заработает?

На 3x-ui 3.x — да: задайте XUI_API_TOKEN (API-токен панели с правами администратора) вместо логина и пароля.

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

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

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

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

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

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