ZH

在 BILLmanager 中接收 USDT:主机商加密货币支付分步指南

在 BILLmanager 中接收 USDT

主机和 VPS 客户常常希望用加密货币付款,其中最多的是 USDT。本指南介绍如何在 BILLmanager 6 中添加加密货币支付方式:客户在充值余额或支付订单时选择 SnapEX Pay (crypto),使用 TRON、Ethereum 或 BSC 网络上的 USDT 或其他币种付款,款项在 BILLmanager 中自动入账。您无需运行自己的钱包或区块链节点——资金以 USDT 形式进入您的 SnapEX Pay 商户余额。

付款流程

客户 → 充值或订单 → SnapEX Pay
BILLmanager → SnapEX Pay:USD 账单
客户 → 在 SnapEX Pay 页面付款
SnapEX Pay → 签名 Webhook → BILLmanager
模块 → 通过 API 查询账单 → paid?
BILLmanager:付款已入账
  1. 客户在支付方式中选择 SnapEX Pay (crypto)。模块按付款金额创建一张以 USD 计价的 SnapEX Pay 账单,并把客户带到支付页面。
  2. 客户选择币种和网络并付款。账单支付完成后,SnapEX Pay 向您的计费系统发送签名 Webhook。
  3. 模块通过 SnapEX Pay API 重新读取账单,只有账单状态为 paid 且金额正确时才会入账。仅凭 Webhook 正文不会让任何款项入账。

付款通过三种独立方式入账,以先到者为准:签名 Webhook、客户从支付页面返回,以及定期检查(checkpay,每 5 分钟一次)。丢失的 Webhook 不会让已付款项无法入账,同一笔付款也绝不会入账两次。

准备条件

  • 任意版本的 BILLmanager 6,以及其服务器的 root 权限。
  • 该服务器上的 python3 3.6+。模块只使用标准库:无需额外的软件包,也不需要 billmanager-plugin-python-libs。
  • 币种为 USD 的支付方式:SnapEX Pay 账单以美元计价。
  • SnapEX Pay 商户账户:在 pay.snapex.pro 注册。

第 1 步:安装模块

下载 snapexpay-billmanager-1.1.0.tar.gz(免费),在 BILLmanager 服务器上以 root 身份运行:

curl -fsSLO https://pay.snapex.pro/downloads/billmanager/snapexpay-billmanager-1.1.0.tar.gz
tar xzf snapexpay-billmanager-1.1.0.tar.gz
cd snapexpay-billmanager-1.1.0
sh install.sh

脚本会把模块复制到 /usr/local/mgr5,添加每 5 分钟运行一次的 checkpay 定时任务(/etc/cron.d/snapexpay)作为兜底,并重启 BILLmanager。如果找不到 BILLmanager 或 python3 3.6+,脚本会给出提示并停止。

第 2 步:获取 API 密钥

在 SnapEX Pay 商户后台打开 Developers 页面,创建 API 密钥。模块需要 invoices.read 和 invoices.write 权限;后台创建的密钥自动拥有 Merchant API 的全部权限,其中包括这两项。密钥只显示一次,请立即复制。重新生成密钥会立即作废旧密钥,因此请同时更新支付方式中的密钥。

第 3 步:添加支付方式

在 BILLmanager 中打开 Provider → Payment methods → Add,选择 SnapEX Pay (crypto)。币种设为 USD,粘贴 API 密钥。

保存时会向 SnapEX Pay 校验密钥:密钥错误或已作废,或币种不是 USD,都无法保存。

其他设置:

  • Client pays the network fee——关闭:客户只支付付款金额,各项手续费从您收到的款项中扣除;开启:SnapEX Pay 手续费和网络手续费加在客户应付金额上。详见:加密货币账单的手续费由谁支付。
  • Payment window, minutes——SnapEX Pay 支付页面的有效时间:1 到 1440 分钟,默认 60。客户之后再次打开付款时,会生成新的页面。
  • Test mode——见第 6 步。
  • Partner ID——见第 5 步。
  • API URL——留空。

客户用其他货币付款?BILLmanager 会按自己的汇率把金额换算成支付方式的币种(USD),请保持 USD 汇率为最新。

第 4 步:配置 Webhook

Webhook 是可选的,但建议配置:有了它,付款一经确认余额就会入账。

  1. 在后台的 Developers 页面填写 Webhook 地址 https://<您的计费域名>/mancgi/snapexpayresult 并保存。
  2. 签名密钥 whsec_… 只显示一次,就在第一次保存之后。把它粘贴到支付方式设置中的 Webhook secret。

模块如何校验通知:

  • Webhook-Signature 请求头:使用您的密钥对 {Webhook-Timestamp}.{原始请求正文} 计算的 HMAC-SHA256;未签名或被篡改的请求返回 401;
  • Webhook-Timestamp 与服务器时钟相差不超过 5 分钟——请保持 NTP 开启;
  • 账单本身:用您的密钥通过 SnapEX Pay API 重新读取。

如果此时无法访问 API,模块返回 502,SnapEX Pay 会重试投递。后台每个账户只有一个 Webhook 地址;不是本模块创建的账单事件,模块会忽略。即使不配置 Webhook,客户从支付页面返回时以及每 5 分钟的检查也会让付款入账。关于签名和重试的更多内容:加密货币支付 Webhook。

第 5 步:Partner ID——谁配置了模块

Partner ID 字段是可选的。如果您是为自己的主机公司安装 BILLmanager,请留空。

如果您是集成商,为客户配置计费系统,请填写您的 Partner ID:客户的商户账户会绑定到您名下,您将获得该客户付款中我们手续费的 35%。客户自己创建 SnapEX Pay 账户和 API 密钥,资金进入客户自己的余额。条款:SnapEX Pay 集成商合作伙伴计划。

第 6 步:不用真实资金的测试付款

  1. 另建一个开启 Test mode 的支付方式,并只对测试客户开放(Payment methods → 按客户组限制)。
  2. 以测试客户身份登录,发起一次充值并选择这个支付方式。
  3. SnapEX Pay 页面上会有 Test 标记。任选币种和网络:页面会显示一个测试地址,大约 10 秒后付款会自动确认。无需发送任何资金。
  4. 该付款在 BILLmanager 中应变为已入账。如果没有,请查看 /usr/local/mgr5/var/pmsnapexpay.log 以及 Developers 页面上的投递日志。
  5. 关闭测试模式,或删除测试支付方式。

测试模式关闭后,测试付款绝不会入账,因此测试资金无法支付真实服务。详见:如何不用真实资金测试加密货币支付。

客户看到什么

  • 充值或支付订单时的支付方式中有 SnapEX Pay (crypto)。
  • SnapEX Pay 支付页面:TRC20、ERC20 和 BEP20 网络上的 USDT 以及其他币种(共 50 多种),前提是 SnapEX Pay 针对该账单金额提供这些币种。
  • 付款后客户返回计费系统。如果付款已确认,BILLmanager 显示常规的付款成功页面;如果尚未确认,客户会看到 "Thank you! Your payment is being confirmed on the blockchain"("谢谢!您的付款正在区块链上确认")以及返回付款列表的链接——余额会自动入账。
  • 如果客户离开后在付款时限内再次打开付款,进入的是同一个页面,而不会生成第二张账单。

BILLmanager 中会发生什么

  • 客户打开付款 → 付款状态变为 In payment,外部 ID 为 SnapEX Pay 账单号(INV-…)。
  • 全额支付 → 付款入账;信息字段显示币种、网络和实收金额。
  • 部分支付(客户少付且未及时补足)→ 不入账,日志中记录 closed with a PARTIAL payment (…) - review in SnapEX Pay and credit manually。已收到的款项在您的 SnapEX Pay 余额中。付款不足如何处理:客户付款少于账单金额。
  • 未按时支付 → 付款保持 In payment,方便客户重试;最后一张 SnapEX Pay 账单过期一天后,付款被取消。
  • 重复支付、付款取消后才支付,或账单关闭后的额外付款 → 记录到日志;资金在您的 SnapEX Pay 余额中。

遇到问题时

  • 支付方式无法保存。 检查 API 密钥(错误或已作废)和币种:只接受 USD。
  • 客户看到 "Crypto payments are not available for this currency"。 支付方式的币种不是 USD。
  • 客户看到 "Could not start the crypto payment"。 SnapEX Pay 拒绝了这张账单;原因见 pmsnapexpay.log。
  • Webhook 返回 401。 Webhook 密钥不一致,或服务器时钟不准。
  • Webhook 返回 503 "webhook secret is not configured"。 后台已设置 Webhook 地址,但支付方式中的 Webhook secret 为空。
  • 客户已付款,但余额没有入账。 在 /usr/local/mgr5/var/pmsnapexpay.log 中查找这笔付款:部分支付以及付款取消后才支付的款项都不会自动入账。

卸载模块:在解压后的目录中运行 sh install.sh --uninstall。付款历史保留在 /usr/local/mgr5/var/snapexpay.sqlite 中。

费用

每笔付款 1%,无接入费,无月费。模块免费。

模块页面:BILLmanager。正在为主机业务挑选网关?请看 主机商如何选择加密货币支付网关。主机商概览:主机商的加密货币支付。注册:pay.snapex.pro。

更多指南

通过 Telegram 机器人销售 VPN 订阅并收取 USDT:分步配置 如何上线 SnapEX Pay 的 Telegram VPN 机器人:套餐、API 密钥、连接 Marzban、3x-ui 或 Remnawave、HTTPS Webhook,以及不花真实资金的测试购买。用户用 USDT 付款,并在同一个聊天中收到订阅链接。 用加密货币续费 VPN 订阅:不重复创建用户,不丢失天数 SnapEX Pay 的 Marzban、3x-ui、Remnawave 模块和 Telegram VPN 机器人如何处理老客户再次付款:新天数从哪天算起,流量、配置和重复 Webhook 如何处理。 Xboard 和 V2Board 接入加密货币支付:分步收取 USDT 订阅费 如何把 SnapEX Pay 接入 Xboard 或 V2Board 面板:安装插件、添加支付方式、配置 Webhook、把 CNY 等货币价格换算成 USD,并在不花真实资金的情况下测试订单。 如何不用真实资金测试加密货币支付 SnapEX Pay 的测试账单与正式账单经历相同的状态、发送相同的 Webhook,但会自动确认,且从不影响您的余额。本文介绍如何使用它们。 客户付款少于账单金额:加密货币付款不足如何处理 交易所经常从金额中扣除提现手续费,导致加密货币账单到账不足。SnapEX Pay 如何处理付款不足、您会收到哪些 Webhook,以及订单该怎么处理。 加密货币账单的手续费由谁支付:您还是客户 SnapEX Pay 允许您按账单选择由谁承担服务费和网络费用。fee_on 的作用,以及它如何改变客户支付的金额和您收到的金额。 加密货币支付 Webhook:校验签名,处理重试和重复投递 SnapEX Pay Webhook 如何签名和投递,如何在 PHP 和 Node.js 中校验,以及如何让您的处理程序能安全应对重试、重复投递和乱序事件。 SnapEX Pay 与 NOWPayments、Cryptomus、CoinGate 对比:手续费和现成模块 SnapEX Pay 与 NOWPayments、Cryptomus 和 CoinGate 在公布的手续费、月费,以及主机计费系统、VPN 面板和网店现成模块方面的对比。竞品数据取自其官网,2026 年 10 月 11 日。 主机商如何选择加密货币支付网关:接入前要问的 8 个问题 面向主机和 VPS 服务商的加密货币支付网关选择清单:计费系统模块、账单如何标记为已支付、付款不足、手续费、结算币种、支持的币种、测试模式以及非美元计费。

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

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