POST · /api/v1/wallet/withdraw/create
发起提现
受理一笔提现请求,立即返回系统侧记录 id。实际广播、确认、回调由派付后台异步推进。
安全建议
- 生产环境请在派付后台为提现配置白名单(限定收款地址 / 金额上限 / 单日笔数);否则任何合法密钥均可提款。
- 提现接口建议走独立鉴权服务,不要和 C 端业务网关混用。
- 大额提现可在后台开启人工审批,策略由你的风控决定。
/api/v1/wallet/withdraw/create HMAC 幂等 appOrderNo 是幂等键。同一应用内相同 appOrderNo 重复提交会返回错误码 1007004000(WITHDRAW_BUSINESS_DUPLICATE),而不会重复出款。 请在你的系统里保证每笔提现使用唯一的业务单号。
Header 参数
X-Api-Keystring required | 应用 apiKey。沙箱前缀 pk_test_,正式 pk_live_。 例: pk_test_4f9d8ab1c0e74... |
X-Timestampinteger (UNIX 毫秒) required | 请求发起时刻的 UNIX 毫秒时间戳(13 位整数)。与服务端时差不能超过 ±300000ms(5 分钟)。 例: 1746450000000 |
X-Noncestring required | 本次请求的随机串,建议 UUID v4 或 16 字节 hex。同一 (apiKey, nonce) 在 10 分钟窗口内不可重复。 例: 8e3a1c2f7b6d4a90 |
X-Signaturestring required | HMAC-SHA256 签名(小写 hex,64 字符)。算法: HMAC(secret, METHOD + "\n" + PATH + "\n" + ts + "\n" + nonce + "\n" + SHA256(body))。详见 鉴权章节。 例: 6e4a8c1f...(64 字符) |
Body 参数
application/jsonappOrderNostring required | 商户业务单号,同一应用内唯一,用作幂等键。重复提交相同 appOrderNo 会返回错误码 1007004000(WITHDRAW_BUSINESS_DUPLICATE)。 例: ORDER_2026050501 |
chainCodestring required | 公链 code,必须是该应用已开通的公链,且与 chainTokenId 对应的代币所属链一致。 例: ETH |
chainTokenIdinteger required | 链上代币 id,从 GET /api/v1/wallet/support/tokens 例: 3 |
toAddressstring required | 收币地址。EVM 链支持 EIP-55 校验和;TRON / BTC 走各自标准格式。 例: 0xab12cd34ef56789000000000000000000000001 |
toMemostring optional | 仅 Memo 链(XRP / XLM / EOS 等)需要传;非 Memo 链忽略。 例: 1234567890 |
amountstring required | 提现金额,必须以字符串传,值必须 > 0,精度由币种 decimals 决定。 例: "10.5" |
callbackUrlstring optional | 本笔单独的回调地址,覆盖应用级 WITHDRAW 回调配置。可用于多产品线分流。 例: https://your.app/cb/withdraw |
remarkstring optional | 备注(≤200 字),仅后台展示,不参与上链。 例: 用户申请提现 |
示例
{
"appOrderNo": "ORDER_2026050501",
"chainCode": "ETH",
"chainTokenId": 3,
"toAddress": "0xab12cd34ef56789000000000000000000000001",
"amount": "10.5",
"callbackUrl": "https://your.app/cb/withdraw"
}请求示例
# 签名算法(stringToSign / 4 个 header)见 /docs/api/auth
API_KEY=pk_test_xxx
SECRET=sk_test_xxx
METHOD=POST
REQ_PATH=/api/v1/wallet/withdraw/create
BODY='{"appOrderNo":"ORDER_2026050501","chainCode":"ETH","chainTokenId":3,"toAddress":"0xab12cd34ef56789000000000000000000000001","amount":"10.5"}'
TS=$(( $(date +%s) * 1000 ))
NONCE=$(uuidgen | tr -d '-' | tr '[:upper:]' '[:lower:]')
BODY_SHA=$(printf "%s" "$BODY" | openssl dgst -sha256 -hex | awk '{print $2}')
SIG=$(printf "%s\n%s\n%s\n%s\n%s" "$METHOD" "$REQ_PATH" "$TS" "$NONCE" "$BODY_SHA" \
| openssl dgst -sha256 -hmac "$SECRET" -hex | awk '{print $2}')
curl -X POST "https://api.pqpa.com$REQ_PATH" \
-H "Content-Type: application/json" \
-H "X-Api-Key: $API_KEY" \
-H "X-Timestamp: $TS" \
-H "X-Nonce: $NONCE" \
-H "X-Signature: $SIG" \
-d "$BODY"响应
200OK
{
"code": 0,
"data": 12345,
"msg": ""
}data 字段说明
datainteger required | 系统侧提现记录 id( withdraw_record.id)。后续用 appOrderNo 或此 id 查询状态。 |
下一步
- 查询单笔提现 — 按
appOrderNo反查当前状态做对账 - 批量发起提现 — 一次提交多笔提现单
- 配置 WITHDRAW 回调 — 状态变更主动通知
- 查询支持代币 — 获取
chainTokenId