CryptoGate 加密支付网关 RESTful API。支持 BSC 和 Polygon 链的 USDT/USDC 收付款。
https://your-domain.comX-API-Key: your_api_key(如未配置 API_KEYS 环境变量则免认证)
所有写操作和敏感读接口需要 API Key 认证。在请求头中传入:
X-API-Key: your_api_key
// 或
Authorization: Bearer your_api_key
以下接口无需认证:GET /api/health、GET /api/chains
3 步完成支付接入:
# 1. 创建发票
curl -X POST https://your-domain.com/api/invoices \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key" \
-d '{"chainId":"bsc","tokenSymbol":"USDT","amount":100}'
# 2. 返回支付地址和精确金额,引导用户转账
# response.data.deposit_address → 收款地址
# response.data.payment_amount → 用户需支付的精确金额(含随机后缀)
# response.checkoutUrl → 托管收银台页面
# 3. 系统自动检测到账,回调通知你的服务器
服务健康检查,无需认证。
响应示例:
{
"status": "ok",
"service": "CryptoGate",
"version": "2.1.0",
"chains": ["bsc", "polygon"],
"tokens": ["USDT", "USDC"],
"database": "connected",
"wallet": "0xE2eb...",
"auth": "enabled",
"timestamp": "2026-05-31T12:00:00.000Z"
}
获取支持的链和代币信息,无需认证。
{
"data": [
{
"id": "bsc",
"name": "BNB Smart Chain",
"chainId": 56,
"nativeSymbol": "BNB",
"tokens": [
{ "symbol": "USDT", "address": "0x55d3...", "decimals": 18 },
{ "symbol": "USDC", "address": "0x8AC7...", "decimals": 18 }
]
},
{
"id": "polygon",
"name": "Polygon PoS",
"chainId": 137,
"nativeSymbol": "MATIC",
"tokens": [
{ "symbol": "USDT", "address": "0xc213...", "decimals": 6 },
{ "symbol": "USDC", "address": "0x2791...", "decimals": 6 }
]
}
]
}
创建支付发票。系统会在金额末尾附加随机小数(6位)作为订单标识,用户需按精确金额转账。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| chainId | string | 必填 | 链 ID:bsc 或 polygon |
| tokenSymbol | string | 必填 | 代币:USDT 或 USDC |
| amount | number | 必填 | 收款金额(整数部分),如 100 |
| externalId | string | 可选 | 你的业务订单号 |
| callbackUrl | string | 可选 | 支付确认后的回调地址 |
curl -X POST https://your-domain.com/api/invoices \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key" \
-d '{
"chainId": "bsc",
"tokenSymbol": "USDT",
"amount": 100,
"externalId": "ORDER-12345",
"callbackUrl": "https://your-site.com/callback"
}'
{
"data": {
"id": "inv_mptt1ata_yj033g",
"external_id": "ORDER-12345",
"chain_id": "bsc",
"token_symbol": "USDT",
"amount": "100.00000000",
"payment_amount": "100.00075231",
"received_amount": "0.00000000",
"deposit_address": "0xE2ebdf2c5f2cb2A6bC440643E52d6f6f1fdd9DE2",
"status": "pending",
"tx_hash": null,
"callback_url": "https://your-site.com/callback",
"created_at": "2026-05-31T12:00:00.000Z",
"expires_at": "2026-05-31T13:00:00.000Z"
},
"checkoutUrl": "/checkout.html?id=inv_mptt1ata_yj033g"
}
deposit_address — 用户转账的目标地址payment_amount — 用户必须支付的精确金额(含随机后缀,用于标识订单)checkoutUrl — 可直接引导用户打开的托管收银台页面expired
查询单个发票详情。
| 状态 | 说明 |
|---|---|
pending | 等待支付 |
confirmed | 已确认到账 |
expired | 超时未支付(60分钟) |
查询发票列表。
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
| limit | number | 20 | 每页条数,最大 100 |
| offset | number | 0 | 偏移量 |
发起代币提现,从主钱包向指定地址转账。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| chainId | string | 必填 | 链 ID |
| tokenSymbol | string | 必填 | 代币符号 |
| address | string | 必填 | 接收地址(0x 开头) |
| amount | number | 必填 | 提现金额 |
| callbackUrl | string | 可选 | 回调地址 |
curl -X POST https://your-domain.com/api/payouts \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key" \
-d '{
"chainId": "bsc",
"tokenSymbol": "USDT",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
"amount": 50
}'
查询提现列表。
查询所有交易记录(充值 + 提现)。
查询主钱包在各链上的代币余额和 Gas 余额。
{
"data": [
{
"chainId": "bsc",
"chainName": "BNB Smart Chain",
"tokenSymbol": "USDT",
"tokenBalance": 10.98,
"nativeBalance": "0.016037",
"nativeSymbol": "BNB",
"address": "0xE2eb..."
}
]
}
查询统计概览。
创建发票时如果传了 callbackUrl,系统在确认到账后会向该地址发送 POST 请求:
POST https://your-site.com/callback
Content-Type: application/json
{
"event": "invoice.confirmed",
"data": {
"id": "inv_mptt1ata_yj033g",
"externalId": "ORDER-12345",
"chainId": "bsc",
"tokenSymbol": "USDT",
"amount": 100,
"paymentAmount": 100.00075231,
"receivedAmount": 100.00075231,
"txHash": "0xabc123...",
"status": "confirmed",
"createdAt": "2026-05-31T12:00:00.000Z",
"confirmedAt": "2026-05-31T12:05:00.000Z"
}
}
GET /api/invoices/:id 主动轮询确认状态。
商户系统 CryptoGate 用户
│ │ │
│ POST /api/invoices │ │
│ ─────────────────────────>│ │
│ 返回 deposit_address │ │
│ 和 payment_amount │ │
│ <─────────────────────────│ │
│ │ │
│ 展示支付地址和金额 │ │
│ ─────────────────────────────────────────────────────>│
│ │ 转账 payment_amount│
│ │<──────────────────────────│
│ │ │
│ │ 检测到账(15s轮询) │
│ │ 匹配金额 → 确认 │
│ │ │
│ 回调通知 invoice.confirmed│ │
│ <─────────────────────────│ │
│ │ │
│ GET /api/invoices/:id │ │
│ ─────────────────────────>│ │
│ status = confirmed │ │
│ <─────────────────────────│ │
│ │ │
│ 发货/完成订单 │ │
│ │ │
| HTTP 状态码 | 说明 |
|---|---|
| 400 | 参数错误(缺少必填字段、不支持的链/代币、金额无效等) |
| 401 | 未认证或 API Key 无效 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
const BASE = 'https://your-domain.com';
const API_KEY = 'your_api_key';
async function createInvoice(chainId, tokenSymbol, amount, externalId) {
const res = await fetch(`${BASE}/api/invoices`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY,
},
body: JSON.stringify({ chainId, tokenSymbol, amount, externalId }),
});
return res.json();
}
async function getInvoice(id) {
const res = await fetch(`${BASE}/api/invoices/${id}`, {
headers: { 'X-API-Key': API_KEY },
});
return res.json();
}
// 使用
const { data } = await createInvoice('bsc', 'USDT', 100, 'ORDER-001');
console.log('支付地址:', data.deposit_address);
console.log('精确金额:', data.payment_amount);
console.log('收银台:', `${BASE}${checkoutUrl}`);
import requests
BASE = 'https://your-domain.com'
API_KEY = 'your_api_key'
HEADERS = {'X-API-Key': API_KEY, 'Content-Type': 'application/json'}
def create_invoice(chain_id, token_symbol, amount, external_id=None):
body = {'chainId': chain_id, 'tokenSymbol': token_symbol, 'amount': amount}
if external_id:
body['externalId'] = external_id
return requests.post(f'{BASE}/api/invoices', json=body, headers=HEADERS).json()
def get_invoice(invoice_id):
return requests.get(f'{BASE}/api/invoices/{invoice_id}', headers=HEADERS).json()
# 使用
result = create_invoice('bsc', 'USDT', 100, 'ORDER-001')
print('支付地址:', result['data']['deposit_address'])
print('精确金额:', result['data']['payment_amount'])