4 接口详情
以下接口路径均以平台接口域名为前缀,例如 POST http://api.xxx.com/ley/register。
ACCOUNT
4.1 会员注册账号 REGISTER
POST
/ley/register
复制
在指定 api_code 对应的游戏平台创建一个会员账号。同一商户下 username 唯一,重复注册返回失败。
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识:AG、BBIN 等
usernameString 是 注册会员账号,最大 191 位
passwordString 是 注册会员密码,最大 255 位
响应参数
字段 类型 说明
CodeInteger 0 成功,其他失败
MessageString 返回说明
Data.usernameString 会员账号(原样返回)
Data.game_usernameString 游戏侧账号(含商户前缀/币种前缀)
请求示例
FORM 复制
account=M100001
api_key=your-api-key
api_code=AG
username=demo_user
password=demo_pass
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"username": "demo_user",
"game_username": "demo_user"
}
}
ACCOUNT
4.2 会员登陆游戏 LOGIN
POST
/ley/login
复制
获取会员进入游戏的跳转地址。
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识:AG、BBIN 等
usernameString 是 注册时的会员账号
gameTypeString 是 游戏类型,见 3.6
gameCodeString 否 子游戏代码,默认 0(大厅)
isMobileInteger 否 0 电脑端(默认)/ 1 手机端
passwordString 否 部分平台登录需要密码
langString 否 语系,默认取商户配置
typeString 否 1 表示登录前先一键回收并自动上分
响应参数
字段 类型 说明
CodeInteger 0 成功
MessageString 返回说明
Data.urlString 游戏跳转地址
Data.specialurlString 特殊启动地址,无则为空串
请求示例
FORM 复制
account=M100001
api_key=your-api-key
api_code=AG
username=demo_user
gameType=1
gameCode=0
isMobile=0
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"url": "https://game.example.com/launch?token=xxx",
"specialurl": ""
}
}
WALLET
4.3 查询会员余额 BALANCE
POST
/ley/balance
复制
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识:AG、BBIN 等
usernameString 是 注册时的会员账号
响应参数
字段 类型 说明
CodeInteger 0 成功
MessageString 返回说明
Data.balanceNumber 会员余额
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"balance": 100.56
}
}
TRANSFER
4.4 查询转账状态 ORDER STATUS
POST
/ley/orderstatus
复制
!
该接口 Code 恒为 0,订单结果必须读取 Data.status;订单不存在或转账失败均返回 fail。
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识
usernameString 是 会员账号
transfernoString 是 转账订单号
响应参数
字段 类型 说明
CodeInteger 恒为 0
MessageString 返回说明
Data.transfernoString 转账订单号
Data.statusString success / fail
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"transferno": "2026110100000001",
"status": "success"
}
}
CREDIT
4.5 获取商户额度 CREDIT
POST
/ley/credit
复制
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识;通用分商户传固定值 CURRENCY
响应参数
字段 类型 说明
CodeInteger 0 成功
MessageString 返回说明
Data.nameString 商户账号
Data.codeString 接口标识
Data.moneyNumber 可用额度,无记录时为 0
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"name": "M100001",
"code": "CURRENCY",
"money": 1000
}
}
RECORD
4.6 获取游戏记录 GAME RECORD
POST
/ley/gamerecord
复制
i
采集时间窗口最少间隔 5 分钟,且最早不超过请求时间前 7 天。不传 start_at / end_at 时默认查询最近 30 分钟。
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
usernameString 否 按会员账号过滤
platformString 否 按平台过滤,如 PG、BBIN;不传则查全部
start_atInteger 否 开始时间,10 位秒级时间戳
end_atInteger 否 结束时间,10 位秒级时间戳
pageInteger 否 页码,默认 1
pageSizeInteger 否 每页条数,默认 20,最大 500
响应参数
字段 类型 说明
Data.total_countInteger 总条数
Data.lastPageInteger 总页数
Data.pageSizeInteger 每页条数
Data.pageInteger 当前页码
Data.dataArray 注单列表
Data.data[].idInteger 注单 ID
Data.data[].rowidString 注单单号
Data.data[].billNoString 注单流水号
Data.data[].codeString 游戏平台代码
Data.data[].usernameString 会员账号
Data.data[].playNameString 会员游戏侧账号
Data.data[].gameNameString 游戏名称
Data.data[].gameTypeInteger 游戏类型,见 3.6
Data.data[].playTypeString 游戏玩法/名称
Data.data[].xzhmString 投注内容
Data.data[].OddsString 赔率
Data.data[].tableCodeString 桌号
Data.data[].roundNoString 局号 / 期号 / 赛事编号
Data.data[].betAmountString 投注金额
Data.data[].validBetAmountString 有效投注金额
Data.data[].netAmountString 输赢结果,不包含本金
Data.data[].statusInteger 1 已结算 / 2 未结算 / 3 无效订单 / 4 已退款
Data.data[].Lottery_resultsInteger 开奖结果
Data.data[].betTimeInteger 投注时间(10 位时间戳)
Data.data[].updateTimeInteger 注单修改时间(10 位时间戳)
请求示例
FORM 复制
account=M100001
api_key=your-api-key
platform=PG
start_at=1793329860
end_at=1793333460
page=1
pageSize=100
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"total_count": 8,
"lastPage": 4,
"pageSize": 2,
"page": 2,
"data": [
{
"id": 1793805,
"rowid": "1210627807831229",
"billNo": "2021101708273880136788",
"code": "OB",
"username": "a3212",
"playName": "asa3212",
"gameName": "赤壁之战",
"gameType": 5,
"playType": "西班牙甲级联赛",
"xzhm": "全场独赢",
"Odds": "1.84",
"tableCode": null,
"roundNo": "1198139",
"betAmount": "20.00",
"validBetAmount": "20.00",
"netAmount": "-20",
"status": 1,
"Lottery_results": null,
"betTime": 1634453258,
"updateTime": 0
}
]
}
}
TRANSFER · IN
4.7 额度转换转入(上分) DEPOSIT
POST
/ley/deposit
复制
!
transferno 必须全局唯一,作为幂等键;同单号重复提交会被拒绝。超时或结果不确定时调用 4.4 补偿,切勿直接重试。
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识
usernameString 是 注册时的会员账号
amountNumber 是 转账金额,≥ 0(代码校验允许小数)
transfernoString 是 转账订单号,16–32 位
响应参数
字段 类型 说明
CodeInteger 0 成功
MessageString 返回说明
Data.depositNumber 实际转入金额
请求示例
FORM 复制
account=M100001
api_key=your-api-key
api_code=AG
username=demo_user
amount=100
transferno=202611010000000001
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"deposit": 100
}
}
TRANSFER · OUT
4.8 额度转换转出(下分) WITHDRAWAL
POST
/ley/withdrawal
复制
请求参数
参数名 类型 必填 说明
accountString 是 商户账号
api_keyString 是 商户密钥
api_codeString 是 接口标识
usernameString 是 注册时的会员账号
amountNumber 是 转账金额,≥ 0(代码校验允许小数)
transfernoString 是 转账订单号,16–32 位
响应参数
字段 类型 说明
CodeInteger 0 成功
MessageString 返回说明
Data.withdrawalNumber 实际转出金额
响应示例
JSON 复制
{
"Code": 0,
"Message": "成功",
"Data": {
"withdrawal": 100
}
}
5 对接须知 / FAQ
本章回答对接方在联调前最常确认的落地问题。标注 待确认 的条目需由平台方运营 / 运维 / 法务给出最终口径,本文档暂不构成承诺。
5.1 环境地址与 HTTPS
环境 Base URL 协议 备注
测试 https://【待填】强制 HTTPS HTTP 请求将被拒绝 / 重定向
生产 https://【待填】强制 HTTPS HTTP 请求将被拒绝 / 重定向
测试与正式环境均统一使用 HTTPS,由接入层强制跳转;域名通过 APP_URL 配置。请勿使用明文 HTTP 调用。
!
域名、证书与有效期需在联调前确认;测试与生产域名不同,请分别加入 IP 白名单(如需)。
5.2 版本与更新记录
版本 日期 变更内容 兼容性
v2.02026-10-01 迭代:新增多币种、多语言功能 向下兼容
v1.22026-05-01 迭代:优化接口安全,优化游戏拉单功能 向下兼容
v1.02025-10-01 初版发布,完成所有基础游戏接口 —
当前版本:v2.0(2026-10-01)。后续变更按倒序追加。
5.3 鉴权与密钥管理
项目 当前实现
鉴权参数 account + api_key
校验方式 hash_equals 常量时间比较,防时序攻击
请求签名 无(不要求 sign)
防重放 无 timestamp / nonce;资金接口靠 transferno 唯一键幂等,查询接口天然幂等
密钥生成 AK + 16 位十六进制
轮换 / 吊销 无自助接口、无双 key 灰度;需联系所属代理申请,代理后台修改 api_key 后立即生效
5.4 IP 白名单
项目 说明
匹配方式 精确匹配,不支持网段 / 通配符
取 IP 方式 仅取 REMOTE_ADDR,不信任 X-Forwarded-For
未命中 返回 IP not allowed
申请 / 变更 由商户在商户后台自行维护 ,保存后立即生效
!
IP 白名单由商户后台自行增删改,保存后立即生效。若商户走 CDN / 反向代理,必须填“最后一跳真实源 IP”;由于只认 REMOTE_ADDR,白名单里填代理 IP 会导致所有请求被拒或误放行。
5.5 转账规则与对账
币种与单位
币种解析优先级:请求参数 currency → 商户接口配置的默认币种 → 系统默认币种:CNY。
金额上下限
接受小数,代码没有上限,实际上限为商户额度,额度不足返回 merchant game score Insufficient balance。
单号重复
已有单据状态 返回
处理中(2) transfer processing, please retry later
成功(1) transfer order already exists
失败(0) 同类型且金额差 < 0.005 允许复用重试;否则 transfer order already exists
transferno 要求 16–32 位,对应唯一键 uk_transfer_no。
超时与结果不明
厂商返回结果不明时,流水置为「处理中(2)」,接口返回 deposit processing, please query later 或 withdrawal processing, please query later。此时不要直接重试 ,应调用 4.4 /ley/orderstatus 查询。
对账
根据4.6接口,自行拉取游戏记录
商户后台->会员管理->游戏记录
5.6 限流、超时与维护
限流(60 秒窗口)
维度 上限 / 分钟
同商户所有接口 1200
同商户同接口路径 300
同商户同 IP 同接口 180
注册接口(同商户) 300
注册接口(同商户同 IP) 60
转账接口(同商户) 180
转账接口(同商户同 IP) 90
超限返回 HTTP 429,响应体为 {"Code":-1,"Message":"Too many requests"}。
超时
平台调用厂商的 HTTP 客户端默认 Http::timeout(30),部分接口 15 秒;商户侧响应超时没有代码级配置
维护时间
代码没有固定维护窗口。维护公告会发在商户后台系统公告 。
5.7 时区与时间规则
5.8 会员密码规则与存储
项目 当前实现
校验 8–32 位、至少字母+数字
存储 Hash::make() → bcrypt,BCRYPT_ROUNDS=12,存 merchant_member.password
日志 api_key / password 置为 ***,RequestLog 排除这两个字段
透传 注册 / 登录时密码会透传给厂商
6 支付方案 · 商户对外 API
本章为 USDT(TRC20)支付方案的商户服务端接口,覆盖充值地址分配、用户查询、充值记录、商户余额与资金归集。与第 1–5 章的游戏接口相互独立,鉴权方式、响应结构与错误码均不相同,请分别对接。
i
本章所有接口均为商户服务端 调用,使用 X-Merchant-Id + X-API-Key + X-Timestamp + X-Signature 四件套鉴权,不使用本章以外的 JWT 。
6.1 公共说明
请求协议
项目 说明
Base URL https://【服务域名】/api/v1/merchant
请求方式 GET / POST
Content-Type application/json
字符集 UTF-8
响应格式 application/json
协议 强制 HTTPS
鉴权与签名
每个请求都必须携带以下 4 个请求头,缺少任意一个返回 401 缺少认证信息。
请求头 类型 必填 说明
X-Merchant-IdString 是 商户 ID,由平台分配
X-API-KeyString 是 商户 API Key,由平台分配
X-TimestampString 是 秒级 10 位时间戳,与服务端偏差须 ≤ 300 秒
X-SignatureString 是 签名值,小写十六进制,算法见下
签名算法:
SIGN 复制
signStr = merchantId + timestamp + apiKey + bodyStr
X-Signature = hex( HMAC-SHA256( key = apiSecret, data = signStr ) )
变量 取值
merchantIdX-Merchant-Id 的值
timestampX-Timestamp 的值
apiKeyX-API-Key 的值
bodyStrPOST 为请求体 JSON 原文;GET 为空字符串 ''
apiSecret商户 API Secret(仅服务端持有,严禁下发客户端)
!
拼接时不加任何分隔符 ,四个部分直接相连。bodyStr 必须与请求体字节一致;若对 JSON 做了重排或增删空格,签名会失败。
签名示例
PHP 复制
$merchantId = 'M100001';
$apiKey = 'your-api-key';
$apiSecret = 'your-api-secret';
$timestamp = (string)time();
// POST:bodyStr 为请求体原文
$body = json_encode(['merchant_user_id' => 'u_1001'], JSON_UNESCAPED_UNICODE);
// GET:bodyStr 为空字符串
// $body = '';
$signStr = $merchantId . $timestamp . $apiKey . $body;
$signature = hash_hmac('sha256', $signStr, $apiSecret);
cURL · GET 复制
curl -X GET "https://【服务域名】/api/v1/merchant/balance" \
-H "X-Merchant-Id: M100001" \
-H "X-API-Key: your-api-key" \
-H "X-Timestamp: 1793329860" \
-H "X-Signature: 9f2c1a..."
i
为兼容历史接入方,服务端对 bodyStr 额外接受「紧凑 JSON」形式,且空请求体时兼容 [] 与 {};同时兼容早期 SHA256(ksort(body+timestamp) + &key=apiSecret) 的旧签名。新接入方请统一使用上表的 HMAC 方式。
IP 白名单
项目 说明
是否强制 强制 ,未配置白名单时所有请求返回 403 未配置API白名单,请联系管理员
匹配方式 精确匹配 IP,不支持网段 / 通配符
未命中 403 IP不在白名单中
变更方式 由平台方在商户后台维护,保存后立即生效
!
若商户侧经 CDN / 反向代理出网,需填写最后一跳的真实源 IP ;服务端仅在对端为内网时才解析代理链,取最右侧非内网 IP。
响应结构
成功:
JSON 复制
{
"success": true,
"data": { },
"message": "操作成功"
}
失败:
JSON 复制
{
"success": false,
"message": "错误描述",
"error_code": 1002,
"details": "补充说明"
}
字段 类型 说明
successBoolean 业务结果唯一判定依据
dataObject | Array 业务数据,失败时不返回
messageString 成功时为操作提示,失败时为错误原因
error_codeInteger 业务错误码,仅部分失败场景返回
detailsString 补充说明,如当前余额明细
错误码
HTTP error_code message 说明
401— 缺少认证信息 四件套请求头不完整
401— 请求已过期 时间戳偏差超过 300 秒
401— 商户不存在或API Key无效 商户 ID 或 API Key 不匹配
401— 签名验证失败 签名串或密钥错误
403— 商户账户已被暂停 商户状态非 active
403— 未配置API白名单,请联系管理员 未维护 IP 白名单
403— IP不在白名单中 来源 IP 未授权
400— 参数不完整 必填参数缺失
404— 用户不存在 merchant_user_id 在该商户下不存在
500— 查询失败 / 创建用户失败 服务端异常,可重试
状态枚举
充值单(deposits.status):
值 说明 是否计入余额
pending已检测到链上交易,等待确认 否
confirmed确认数达标,已入账 是
以实际返回值为准,后续可能新增状态,请勿对未知状态做异常中断处理。
时间与金额
项目 规则
时间格式 YYYY-MM-DD HH:mm:ss(服务器时区,非 ISO 8601)
可空时间 未产生时为 null,如未确认的 confirmed_at
金额单位 USDT,响应为数值,最多 6 位小数
金额入参 建议使用字符串,避免浮点误差
分页参数 page 从 1 开始;limit 默认 20,最大 100
MERCHANT · USER
6.2 创建用户充值地址 CREATE USER
POST
/users/create
复制
为商户侧用户分配一个专属 TRON 充值地址。该地址由 HD 钱包派生,同一 merchant_user_id 重复调用返回已存在的用户,不会重复分配地址 。
请求参数
参数名 类型 必填 说明
merchant_user_idString 是 商户侧用户唯一标识,商户内唯一
emailString 否 用户邮箱,不传则自动生成占位邮箱
usernameString 否 用户名,不传则按商户与用户标识生成
extra_dataObject 否 业务扩展字段,原样存储
响应参数
字段 类型 说明
data.user_idString 平台用户 ID,格式 USR_{id}
data.merchant_user_idString 商户侧用户标识(原样返回)
data.usdt_addressString 专属 TRON 充值地址(TRC20-USDT)
data.balanceNumber 可用余额,新用户为 0
data.created_atString 创建时间
请求示例
JSON 复制
{
"merchant_user_id": "u_1001",
"email": "user1001@example.com",
"username": "user1001",
"extra_data": { "vip": 1 }
}
响应示例
JSON · 200 复制
{
"success": true,
"data": {
"user_id": "USR_1001",
"merchant_user_id": "u_1001",
"usdt_address": "TXYZExampleAddress123456789",
"balance": 0,
"created_at": "2026-11-01 10:00:00"
},
"message": "创建成功"
}
i
用户已存在时同样返回 success = true,message 为 用户已存在,data 结构一致。接入方可安全重试。
MERCHANT · USER
6.3 查询用户信息 GET USER
GET
/users/{merchant_user_id}
复制
查询单个用户的充值地址、余额与累计充值/提现。
路径参数
参数名 类型 必填 说明
merchant_user_idString 是 商户侧用户标识
响应参数
字段 类型 说明
data.user_idString USR_{id}
data.usdt_addressString 专属充值地址
data.balanceNumber 可用余额
data.frozen_balanceNumber 冻结余额(提现处理中占用)
data.total_depositsNumber 累计已确认充值金额
data.total_withdrawalsNumber 累计已完成提现金额
data.statusString 用户状态,active 为正常
data.created_atString 创建时间
响应示例
JSON · 200 复制
{
"success": true,
"data": {
"user_id": "USR_1001",
"merchant_user_id": "u_1001",
"usdt_address": "TXYZExampleAddress123456789",
"balance": 100.5,
"frozen_balance": 10.0,
"total_deposits": 200.5,
"total_withdrawals": 90.0,
"status": "active",
"created_at": "2026-11-01 10:00:00"
}
}
失败:404 用户不存在。
MERCHANT · DEPOSIT
6.4 查询充值记录 DEPOSITS
GET
/deposits
复制
分页查询本商户的充值记录,支持按状态、用户与日期筛选。
查询参数
参数名 类型 必填 说明
pageInteger 否 页码,默认 1
limitInteger 否 每页条数,默认 20,最大 100
statusString 否 pending / confirmed
merchant_user_idString 否 按用户筛选
start_dateString 否 开始日期,YYYY-MM-DD,含当日
end_dateString 否 结束日期,YYYY-MM-DD,含当日
响应参数
字段 类型 说明
data.stats.totalNumber 本商户全量 充值金额合计
data.stats.pendingInteger 本商户全量 待确认笔数
data.stats.todayNumber 本商户今日已确认充值金额
data.deposits[]Array 当前页充值记录
data.deposits[].deposit_idString DEP_{id}
data.deposits[].merchant_user_idString 商户侧用户标识
data.deposits[].usernameString 用户名
data.deposits[].amountNumber 充值金额(USDT)
data.deposits[].feeNumber 充值手续费,无则为 0
data.deposits[].tx_hashString 链上交易哈希
data.deposits[].from_addressString 付款方地址
data.deposits[].to_addressString 收款地址(用户专属地址)
data.deposits[].confirmationsInteger 确认数
data.deposits[].statusString 见 6.1 状态枚举
data.deposits[].created_atString 检测时间
data.deposits[].confirmed_atString | null 入账时间
data.pagination.pageInteger 当前页码
data.pagination.limitInteger 每页条数
data.pagination.totalInteger 筛选后 总条数
data.pagination.total_pagesInteger 总页数
!
stats 为商户维度全量统计,不受 status、merchant_user_id、start_date、end_date 筛选影响;pagination.total 才是筛选后的条数。两者口径不同,勿混用。
响应示例
JSON · 200 复制
{
"success": true,
"data": {
"stats": {
"total": 5000.5,
"pending": 2,
"today": 120.0
},
"deposits": [
{
"deposit_id": "DEP_9001",
"merchant_user_id": "u_1001",
"username": "user1001",
"amount": 100.5,
"fee": 0,
"tx_hash": "abc123...",
"from_address": "TSenderAddress...",
"to_address": "TXYZExampleAddress123456789",
"confirmations": 6,
"status": "confirmed",
"created_at": "2026-11-01 10:00:00",
"confirmed_at": "2026-11-01 10:01:00"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 50,
"total_pages": 3
}
}
}
MERCHANT · BALANCE
6.5 查询商户余额 BALANCE
GET
/balance
复制
汇总本商户全部用户的余额、冻结额与当日流水。
响应参数
字段 类型 说明
data.total_balanceNumber 用户余额合计
data.frozen_balanceNumber 冻结余额合计
data.available_balanceNumber 可用余额,由服务端口径计算
data.today_depositsNumber 今日已确认充值金额
data.today_withdrawalsNumber 今日已提现金额
data.total_usersInteger 商户下用户总数
响应示例
JSON · 200 复制
{
"success": true,
"data": {
"total_balance": 5000.5,
"frozen_balance": 200.0,
"available_balance": 4800.5,
"today_deposits": 120.0,
"today_withdrawals": 90.0,
"total_users": 128
}
}
i
该接口按天聚合,适合做商户维度的日终对账;按用户核对请使用 6.3 与 6.4。
MERCHANT · COLLECT
6.6 一键归集 COLLECT
POST
/wallets/collect
复制
将本商户下所有符合条件的用户地址余额归集到商户冷钱包。
请求参数
无。商户范围与冷钱包地址由平台侧配置决定。
归集规则
项目 说明
归集对象 商户下 status = active、且已分配充值地址的用户
归集门槛 余额低于商户配置的最低归集数量时跳过
链上前置条件 地址需已激活且持有足够 TRX 支付手续费,否则该地址记为失败
归集目标 商户冷钱包地址
执行方式 同步执行 ,逐地址上链,地址较多时耗时较长
响应参数
字段 类型 说明
data.record_idInteger 归集批次记录 ID
data.totalInteger 参与归集的地址数
data.successInteger 成功笔数
data.failedInteger 失败笔数
data.skippedInteger 跳过笔数(低于门槛等)
data.stoppedBoolean 是否被中途停止
data.results[]Array 逐地址明细
data.results[].user_idInteger 用户 ID
data.results[].from_addressString 归集源地址
data.results[].amountNumber 归集金额
data.results[].statusString success / failed / skipped
data.results[].tx_hashString | null 链上交易哈希
data.results[].error_msgString | null 失败或跳过原因
data.results[].onchain_usdtNumber 归集前余额
data.results[].onchain_trxNumber 地址 TRX 余额
响应示例
JSON · 200 复制
{
"success": true,
"data": {
"record_id": 88,
"total": 128,
"success": 120,
"failed": 3,
"skipped": 5,
"stopped": false,
"results": [
{
"user_id": 1001,
"from_address": "TXYZExampleAddress123456789",
"amount": 150.5,
"status": "success",
"tx_hash": "abc123...",
"error_msg": null,
"onchain_usdt": 150.5,
"onchain_trx": 12.0
}
]
},
"message": "归集完成:成功 120 笔,失败 3 笔,跳过 5 笔(未达阈值)"
}
失败场景
场景 HTTP message
未配置冷钱包 400该商户未设置冷钱包地址,无法归集
执行异常 500归集失败 或具体异常信息
!
该接口为同步执行 ,地址数量多时可能耗时数分钟。客户端超时时间需单独设置(建议 ≥ 300 秒),并避免并发重复触发。超时断开不代表归集未执行,请以后台归集记录为准。