ZH
VPN 面板

支持加密货币付款的 Telegram VPN 机器人

一个以加密货币销售 VPN 订阅的自托管 Telegram 机器人。客户在聊天中选择套餐,并在 SnapEX Pay 页面付款(TRC20、ERC20 或 BEP20 上的 USDT,以及 SnapEX 针对该金额提供的其他币种)。付款确认后,机器人会在您的 Marzban、3x-ui 或 Remnawave 面板中创建或续期用户,并把订阅链接发送到同一个聊天。

下载模块

免费。版本 1.1.0。

功能

  • 无需运行钱包或区块链节点:资金进入您的 SnapEX Pay 商户余额。
  • /start 以按钮显示您的套餐;每次点击都会创建一张 SnapEX Pay 账单,并回复一个支付按钮。
  • 支持 Marzban、3x-ui(3.1+ 的 clients API 和旧的 inbound API)以及 Remnawave 2.x 和 3.x。使用 PANEL_TYPE=none 时,机器人只确认付款,由您自行发放访问权限。
  • 签名 Webhook(HMAC-SHA256,5 分钟窗口);账单会从 SnapEX Pay API 重新读取,只有已支付且属于机器人订单时才开通。重复投递只会开通一次。
  • 续期:回头客(同一 Telegram 账户)从当前到期时间续期;有流量限制的套餐会开始新的配额。
  • 单个容器,使用长轮询,因此只需开放 Webhook 端口。订单保存在 SQLite 中,并附带套餐副本。

安装

  1. 在 SnapEX Pay 商户后台创建一个具有 invoices.read 和 invoices.write 权限的 API 密钥。
  2. 下载并解压压缩包,运行 cp .env.example .env,设置机器人令牌、SnapEX Pay 密钥、PANEL_TYPE(marzban、3xui、remnawave 或 none)、面板凭据和 PLANS。
  3. 启动:docker compose up -d --build,然后查看 docker compose logs -f bot。
  4. 机器人监听 8080 端口(/webhook 和 /health)。将其置于 Caddy 或 nginx 等 TLS 反向代理之后。
  5. 在后台添加 Webhook 端点 https://<your bot host>/webhook,将其 whsec_… 密钥填入 SNAPEX_WEBHOOK_SECRET 并重启。向机器人发送 /start,并使用 SNAPEX_ENVIRONMENT=test 测试一个套餐。

设置

TELEGRAM_BOT_TOKEN, SHOP_NAME来自 @BotFather 的机器人令牌;显示在 /start 和账单描述中的商店名称。
SNAPEX_API_KEY, SNAPEX_WEBHOOK_SECRET商户 API 密钥(invoices.read、invoices.write)和 Webhook 密钥(whsec_…)。
SNAPEX_ENVIRONMENT, SNAPEX_FEE_ONlive 或 test 账单;谁支付 SnapEX 手续费 — merchant 或 customer。
PANEL_TYPEmarzban、3xui、remnawave 或 none,以及该面板的凭据。
PLANS逗号分隔的 id:days:price_usd:traffic_bytes;0 字节 = 不限。

分步配置指南 →

常见问题

机器人支持哪些面板?

Marzban、3x-ui(MHSanaei,两个 API 版本)以及 Remnawave 2.x 和 3.x。使用 PANEL_TYPE=none 时只收款。

客户如何与 VPN 用户对应?

面板用户名为 tg<telegram_id>,因此每个 Telegram 账户恰好对应一个 VPN 用户,再次付款会为其续期。

以后修改价格会怎样?

订单保存了套餐副本,因此修改 PLANS 不会改变已支付的订单。

一笔付款会被重复开通吗?

不会。重复或并发的 Webhook 投递只会开通一次,每次点击按钮都会生成自己的账单。

服务器需要为 Telegram 开放端口吗?

不需要。机器人使用长轮询;只需为 SnapEX Pay 开放 HTTPS 后面的 Webhook 端口。

准备好接收加密货币了吗?

创建商户账户,获取 API 密钥并连接模块。每笔支付 1%,无月费。