如何用自托管加密货币支付网关接受 USDT 收款
完整教程:部署你自己的加密货币支付网关,接受 USDT(ERC-20、TRC-20、BEP-20)及 100+ 种代币收款,完全掌控资金和私钥。
为什么要接受 USDT 收款?
USDT(泰达币)是全球最广泛使用的稳定币,市值已超过 1400 亿美元。对商家来说,接受 USDT 相比传统支付方式有显著优势:
- 无拒付 — 链上确认后交易不可逆转
- 全球覆盖 — 任何有加密钱包的人都可以付款
- 低费率 — 只需支付区块链 Gas 费,没有 2-3% 的信用卡手续费
- 即时到账 — 几分钟内到账,无需等待银行结算
- 多链支持 — 接受以太坊(ERC-20)、波场(TRC-20)、BNB Chain(BEP-20)等多种网络的 USDT
托管支付网关的问题
大多数加密货币支付处理器(如 CoinGate、OpenNode)是托管方案——它们托管你的资金、收取平台费(通常 0.5-1%),你需要信任第三方保管私钥。如果它们宕机或被黑客攻击,你的业务将受到影响。
自托管加密货币支付网关完全解决了这个问题:运行在你自己的服务器上,私钥永远不离开你的基础设施,每笔付款直达你的钱包,零平台费用。
方案一:部署 Xcash(3 分钟)
Xcash 是开源自托管加密货币支付网关,支持 100+ 区块链,涵盖所有主流 USDT 网络。
前提条件
- Linux 服务器(最低 1 核、2GB 内存)
- 已安装 Docker 和 Docker Compose
- 已解析到服务器的域名
- 所选区块链的 RPC 节点地址
第一步:克隆并初始化
git clone https://github.com/xca-sh/xcash.git
cd xcash
./scripts/init_env.sh 该命令会自动生成所有必要的密钥:Django Secret Key、数据库密码、签名密钥和 HMAC 密钥。
第二步:配置域名
编辑 .env 文件:
SITE_DOMAIN=your-domain.com 第三步:启动服务
docker compose up -d 完成。你的支付网关已开始运行。
第四步:配置区块链 RPC
登录管理后台(默认账号 admin / Admin@123456),进入链管理页面,为需要使用的链填写 RPC 节点地址。接受 USDT 收款通常需要:
- 以太坊 — ERC-20 USDT
- 波场 Tron — TRC-20 USDT(最流行,手续费最低)
- BNB Chain — BEP-20 USDT(低费用,快速确认)
- Arbitrum / Base / Polygon — L2 USDT 选项
可从 QuickNode、Alchemy 或 Infura 等节点服务商获取 RPC 地址。
接受你的第一笔 USDT 付款
部署完成后,使用 REST API 创建支付账单:
import hashlib, hmac, json, time, uuid
import requests
API_BASE = "https://your-domain.com/api"
APPID = "your-app-id"
HMAC_KEY = "your-hmac-key"
def create_invoice():
body = json.dumps({
"out_no": "order-20260515-001",
"title": "Premium Plan",
"currency": "USD",
"amount": "29.99"
}, separators=(',', ':'))
timestamp = str(int(time.time()))
nonce = str(uuid.uuid4())
message = nonce + timestamp + body
signature = hmac.new(
HMAC_KEY.encode(), message.encode(), hashlib.sha256
).hexdigest()
resp = requests.post(
f"{API_BASE}/v1/invoice",
data=body,
headers={
"XC-Appid": APPID,
"XC-Timestamp": timestamp,
"XC-Nonce": nonce,
"XC-Signature": signature,
"Content-Type": "application/json"
}
)
return resp.json()
invoice = create_invoice()
print(f"Payment URL: {invoice['pay_url']}") pay_url 会将你的客户引导至支付页面,他们可以选择用 USDT(或其他支持的加密货币)付款。链上确认后,Xcash 通过 Webhook 将交易详情推送到你的服务器。
方案二:使用 Xcash 云服务(免部署)
如果你不想自己部署,Xcash 也提供云托管版本,每月 $49 起,无需管理基础设施。
安全最佳实践
- 使用专用服务器 — 不要将 Xcash 与其他对外服务放在一起
- 启用 IP 白名单 — 限制 API 访问仅来自你的后端服务器
- 设置提现限额 — 配置每日限额和多重签名审核
- 监控风险评分 — Xcash 的 MistTrack 集成自动标记可疑地址
- 安全保管密钥 — 备份
.env文件和 HMAC 密钥
自托管方案对比
| 功能 | Xcash | BTCPay Server | CoinGate |
|---|---|---|---|
| 自托管 | ✅ | ✅ | ❌ |
| USDT 支持 | ✅ (ERC-20, TRC-20, BEP-20) | ❌ | ✅ |
| 100+ 链 | ✅ | ❌ 仅比特币 | ✅ |
| 零平台费 | ✅ | ✅ | ❌ 1%+ |
| 充提币 | ✅ | ❌ | ❌ |
| MistTrack 风控 | ✅ | ❌ | ❌ |
| 部署时间 | 3 分钟 | 30 分钟+ | N/A(托管) |
总结
接受 USDT 收款不意味着要交出控制权或支付高额费用。像 Xcash 这样的自托管支付网关让你两者兼得:你的客户可以用 USDT 付款,而你完全持有私钥,且无需支付平台费用。
准备开始了吗?3 分钟部署 Xcash:
git clone https://github.com/xca-sh/xcash.git
cd xcash && ./scripts/init_env.sh && docker compose up -d 或访问 xca.sh 使用云托管版本。