Криптоплатежи для 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.
Установка
- В кабинете мерчанта SnapEX Pay создайте API-ключ с правами
invoices.readиinvoices.write. - Скачайте и распакуйте архив, в его папке выполните
cp .env.example .envи заполнитеSNAPEX_API_KEY,API_TOKEN,XUI_URL(с web base path),XUI_USERNAMEиXUI_PASSWORD,XUI_INBOUND_IDиXUI_SUB_URL. - Запустите:
docker compose up -d, проверьтеcurl http://localhost:8080/health. - Поставьте сервис за HTTPS (nginx, Caddy, Traefik). В кабинете добавьте вебхук
https://<ваш сервис>/webhook, впишите его секрет вSNAPEX_WEBHOOK_SECRETи снова выполнитеdocker compose up -d. - Из бота или бэкенда вызывайте
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. |
| API_TOKEN | Bearer-токен для /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_URL | Inbound для новых клиентов (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% с платежа, без абонентской платы.