API 参考 / 提现
查询用户每日提现上限
查询已登记链上某位玩家当前的每日提现上限和已计入金额,与管理后台保存的“用户每日提现上限”使用同一规则。
/v1/withdrawal-quota接入方服务端 → 支付服务
调用说明
查询只读,不创建玩家,不受理提现,也不改变任何订单或预扣。
调用时机
在玩家打开提现页、切换网络或主动刷新时调用,用于展示每日上限、已用和剩余。查询不是提交提现的前提;200 也不保证随后提交一定受理。不要把查询结果当作扣款或退款凭证。
调用步骤
- 后端从自己的登录态确定 playerId,选择平台登记的 chainId。两个 query 各一次,不添加额外参数,GET body 为空。
- 使用 API 凭据按 METHOD|PATH|TIMESTAMP|QUERY|BODY 签原始路径和 query。chainId 为 1–20 位数字,验签后按登记目录规范化;playerId 保持原样。
- 核对返回的玩家、链名、链 ID、登记合约与 schemaVersion=2。该数字只表示 JSON 格式版本,不要求启用其他提现能力。
结果处理
quota 为对象时,limitBase 是该链每位用户分别适用的每日上限,spentBase 是这位用户当前北京时间自然日已计入的申请额,包含处理中与成功订单,排除取消、拒绝和失败。按申请时间统计,昨天未完成订单不计入今天;首次保存前的申请不计入,修改上限保留原统计起点,清空后重新保存从新起点统计,等于起点的申请计入。
金额都是代币最小单位的整数字符串,用 decimals 换算。例如 decimals=6 时,1000000000 表示 1000 USDT。reservedBase 固定为字符串 0,blocked=false;它们不表示没有在途订单。availableBase=max(0,limitBase-spentBase)。requestedBase、retryAt、retryAfterSeconds 均显式为 null。
quota 显式为 null 表示平台尚未设置或已清空该链上限,即不限额;这不是上限为 0,也不是查询失败。此时仍核对身份和 serverNow,不显示已用/剩余/重置倒计时。
所有字段来自同一只读一致快照。quota 非 null 时 serverNow=quota.evaluatedAt,resetAt 是下一次北京时间 00:00 的 UTC 时间。用你方已校时后端的可信当前时间计算展示倒计时,不从收到响应时重新倒数;后台变更或新订单可让下一次查询变化。查询不会重新打开任何已拒绝原单。
失败与重试
401:检查 API 凭据、时间戳与签名原文。422:检查两个 query、登记链和空 body。404:当前认证接入方下找不到该玩家,不创建玩家、不修改旧单。 503 或超时:结果未知,保留原账和预扣,稍后重查;先核对钱包/管理服务版本、目录、配置、数据库和只读权限。不得填零、改成 quota:null、换单重提或据此释放预扣。
请求头
| 请求头 | 说明 |
|---|---|
X-Access-Key必填 | 平台发放的 API Access Key,用于识别你的业务后端。每个请求发送一次;只在服务端保存。 |
X-Timestamp必填 | 本次请求的 Unix 秒,使用十进制字符串。与服务端时间相差不得超过 300 秒;每个请求发送一次,重试重新生成。 |
X-Signature必填 | 本次 API 请求的 HMAC-SHA256 签名,64 个小写十六进制字符。使用 API 密钥签 METHOD|PATH|TIMESTAMP|QUERY|BODY,保留实际路径、query 和 body 字节;每个请求发送一次。 |
查询参数
1;最多字符数:128^[0-9]{1,20}$GET 请求的 body 必须为空;只发送本页列出的路径和 query 参数。
响应字段
200 成功响应
当前用户每日上限快照;quota:null 明确表示不限额,不能据此改账。
schemaVersion | 2 |
|---|---|
quota.scope | user_chain |
quota.currency | USDT |
quota.reservedBase | 0 |
quota.requestedBase | null |
quota.window | fixed_day |
quota.timezone | Asia/Shanghai |
quota.retryAt | null |
quota.retryAfterSeconds | null |
quota.blocked | false |
21;最多字符数:128^[1-9][0-9]{0,77}$1;最多字符数:128登记链的规范化代币合约;TRON校验和仍须由严格解码器校验。
^(0x[0-9a-f]{40}|T[1-9A-HJ-NP-Za-km-z]{33})$可信服务端快照时间,UTC RFC3339;quota 非 null 时与 quota.evaluatedAt 完全相同。
date-time;格式规则:^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{1,9})?Z$当前每日上限;所有字段必含,nullable 字段显式保留。只有整个 quota=null 表示明确不限额。金额、时间和跨字段算术须严格校验。
查看结构与约束
user_chainUSDT0;最大值:255该链每个用户分别适用的每日上限,代币最小单位整数字符串;按 decimals 换算展示。
^[1-9][0-9]*$;最多字符数:1024当日已计入的申请总额,含处理中和成功订单;按申请日统计,排除取消、拒绝和失败。
^(0|[1-9][0-9]*)$;最多字符数:1024固定为字符串 0,处理中申请已包含在 spentBase,不表示没有在途提款。
0;格式规则:^(0|[1-9][0-9]*)$;最多字符数:1024当前快照剩余=max(0,limitBase-spentBase),不是玩家余额,也不保证随后受理。
^(0|[1-9][0-9]*)$;最多字符数:1024当前上限查询显式 null。
null;格式规则:^[1-9][0-9]*$;最多字符数:78;允许 null正 uint64 十进制字符串,最大 18446744073709551615。当前简单上限再次保存金额不递增此值,不能用作通知新旧排序或配置变更序号;范围由 codec 校验。
^[1-9][0-9]*$;最多字符数:20fixed_dayAsia/Shanghai规范 UTC RFC3339Nano;1–9999 年、有效日期、无尾零小数,由共享 codec 校验。
^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{0,8}[1-9])?Z$evaluatedAt 所属北京时间自然日的下一次 00:00,使用 UTC RFC3339Nano 表达。用此绝对时间减可信服务端当前时间展示等待时长;到点不重开旧单。
^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{0,8}[1-9])?Z$生成快照时距 resetAt 的向上取整秒数。延迟或重试通知不能从收件时重新倒数此值。
1;最大值:86400当前上限查询显式 null;重置时间见 resetAt,不提供自动重提指令。
null;格式规则:^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{0,8}[1-9])?Z$;允许 null与 retryAt 配对的评估时等待秒数;retryAt 为 null 时本字段也显式为 null。
null;最小值:1;最大值:86400;允许 null固定 false,不是判断提款付款状态的依据。
false不接受未定义字段。
不接受未定义字段。
HTTP 状态码
| 状态码 | 含义与处理 |
|---|---|
200 | 当前用户每日上限快照;quota:null 明确表示不限额,不能据此改账。 |
401 | 身份验证失败。检查 API 凭据、时间戳及原始路径和 query 签名。 |
404 | 当前认证接入方下无此玩家;不能据此改旧订单或释放预扣。 |
422 | 查询参数无效。playerId、登记 chainId 各一次,禁止额外 query,GET body 必须为空。 |
503 | 当前上限未知。配置损坏、目录或单位不符、缺表、只读权限或依赖不可用;不能伪造零或不限额。 |
失败时先核对 HTTP 状态、原始签名内容和环境配置,见 错误处理。
接口规范与环境配置
规范包含当前主动接口、每日提现上限查询和一个通知接收操作。高级 24 小时充值对账接口仅收起展示,旧直链和下载规范保留;每日上限查询读取与后台相同的当前规则;仍须核对本环境服务版本与数据库依赖。字段、必填项、枚举和示例见各接口;机器可读版本为 OpenAPI 3.0 规范。
| 操作 | 方法与路径 | 用途 |
|---|---|---|
| createDepositAddress | POST /v1/addresses | 获取玩家充值地址 |
| listPlayerDeposits | GET /v1/players/{playerId}/deposits?chainId=... | 充值页查进度 |
| queryDeposit | GET /v1/deposits/{txRef} | 复核单笔充值 |
| submitWithdrawal | POST /v1/withdrawals | 提交提现申请 |
| listPlayerWithdrawals | GET /v1/players/{playerId}/withdrawals?chainId=...&page=1&pageSize=20 | 分页补查玩家该链已受理提现 |
| queryWithdrawal | GET /v1/withdrawals/{withdrawOrderId} | 查询提现最新状态 |
| cancelWithdrawal | POST /v1/withdrawals/{withdrawOrderId}/cancel | 取消尚未进入链上处理的提现,成功后为 refunded |
| queryWithdrawalQuota | GET /v1/withdrawal-quota?playerId=...&chainId=... | 读取与后台相同的当前每日上限和当日申请额;quota:null 表示不限额 |
| getWebhookConfig | GET /v1/webhook-config | 只读核对通知 URL、启用状态、凭据是否配置、可用性及配置版本;不代表已送达 |
| receiveTerminalNotice | POST {notifyUrl} | 你的端点接收交易通知 |
导入 API 工具后,将 servers[0].variables.baseUrl.default 设为平台发放的 API 接入地址;每次调用都重新签名。通知操作独立使用你的完整通知 URL:notifyOrigin 只填协议、主机和端口,操作路径填写接收端的实际路径。默认 /notify 只是示意,不要在已有路径后再次追加,也不能把它当作业务 API 路径。预期工具最终请求的地址与对应环境配置一致;不一致时先检查主机、路径及前缀的拼接。