Core for get payments
Find a file
2026-04-26 18:25:56 +07:00
billing_core tg_gateway complited frontend 2026-04-26 18:25:56 +07:00
tg_gateway tg_gateway complited frontend 2026-04-26 18:25:56 +07:00
vpn_provisioner tg_gateway complited frontend 2026-04-26 18:25:56 +07:00
.gitignore TG state machine 2026-04-03 17:56:40 +07:00
Cargo.lock tg_gateway complited frontend 2026-04-26 18:25:56 +07:00
Cargo.toml TG state machine 2026-04-03 17:56:40 +07:00
compose.yaml tg_gateway complited frontend 2026-04-26 18:25:56 +07:00
README.md TG state machine 2026-04-03 17:56:40 +07:00

Цель

Проект представляет собой централизованный сервис (Master-узел) для автоматизации биллинга, управления жизненным циклом пользователей и контроля распределенных VPN-серверов (Worker-узлов) на базе протокола Xray.

Основная задача системы — полное исключение ручного администрирования подписок и обеспечение приема платежей без публичной компрометации личных банковских реквизитов администратора. Система берет на себя изоляцию инфраструктуры: конечный пользователь взаимодействует исключительно с Telegram-ботом, платежный шлюз асинхронно подтверждает транзакции, а оркестратор по REST API синхронизирует статусы доступов на конечных узлах.

Архитектура

Архитектура построена по паттерну Master-Worker с событийно-ориентированной (Event-Driven) моделью обработки платежей и выдачи доступов.

Система состоит из трех изолированных контуров:

  1. Master Node (Оркестратор): Единая точка входа и Source of Truth.
    • Обрабатывает клиентские команды интерфейса (Telegram).
    • Локализует генерацию платежных ссылок по спецификации шлюза.
    • Принимает и криптографически валидирует (по sha1_hash) входящие HTTP-вебхуки от платежной системы.
    • Управляет транзакциями в реляционной базе данных.
    • Формирует итоговые URI-строки (формата vless://) для клиентов.
  2. Worker Nodes (VPN-серверы): Изолированные серверы (гео-распределенные ноды). Не содержат бизнес-логики и базы пользователей. Обрабатывают исключительно зашифрованный сетевой трафик (Xray-core) и принимают команды на мутацию состояния конфигурации через API-шлюз (3x-ui).
  3. Векторы взаимодействия (Контракты данных):
    • B2C (Telegram API): Асинхронный опрос (Long Polling) или Webhook для команд /pay, /status.
    • B2B (YooMoney QuickPay): Однонаправленный HTTP POST (p2p-incoming) от шлюза к оркестратору.
    • M2W (3x-ui REST API): Stateful-взаимодействие (Cookie-based Session). Вызов эндпоинтов /xui/API/inbounds/addClient и updateClient для провижининга UUID.

Стек

Инфраструктура и кодовая база опираются на следующие технологии:

  • Backend Orchestrator: Rust. Выбран для обеспечения предсказуемого потребления памяти и строгой типизации контрактов.
    • Сетевое взаимодействие: reqwest (HTTP-клиент для Xray API), axum (сервер для приема Webhooks).
    • Telegram Interface: teloxide.
  • Database (Source of Truth): PostgreSQL. Реляционное хранение таблиц users, payments, nodes с обеспечением ACID для финансовых транзакций. ORM / Query Builder: sqlx или diesel.
  • VPN Core: Xray-core. Реализация протоколов VLESS, XTLS-Reality, Vision.
  • Worker API Gateway: 3x-ui (используется исключительно как REST-интерфейс доступа к конфигурации Xray; локальная БД SQLite на узлах игнорируется).
  • Payment Processing: ЮMoney API (генерация форм QuickPay + HTTP-уведомления).