查询提现单 — checkWithdrawOrder
按商户订单号(userOrder)查询一笔提现单的当前状态。返回结构与提现状态回调一致,可用于:
- 回调未及时到达时的主动兜底查询;
- 对账时核对订单终态(
orderStatus)与链上交易哈希(txid)。
POST https://api.anonypay.io/api/merchant/checkWithdrawOrder与其他业务接口相同:请求体为业务 JSON 的 RSA-OAEP 加密密文,并携带全套签名头(ANONY-APP-ID / ANONY-TOKEN / ANONY-TIMESTAMP / ANONY-NONCE / ANONY-SIGN)。加解密与签名规范见协议说明,token 获取见 getToken。
请求参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
userOrder | string | 是 | 商户订单号(创建提现单时传入的 userOrder) |
请求体示例(加密前的业务 JSON):
json
{ "userOrder": "W20260708-0001" }响应字段
data 验签、解密后为业务 JSON,字段与提现状态回调一致:
| 字段 | 类型 | 说明 |
|---|---|---|
businessType | string | 固定 withdraw |
toAddress | string | 提现目标地址 |
amount | string | 提现金额 |
currency | string | 币种符号 |
fee | string | 手续费 |
apiOrder | string | 平台订单号 |
userOrder | string | 商户订单号 |
withdrawType | string | 提现类型:normal(普通)/ financialConfirmation(财务确认) |
message | string | 备注 |
txid | string | 链上交易哈希(未完成时可能为空) |
orderStatus | string | 订单状态,取值见下表 |
解密后的响应示例:
json
{
"businessType": "withdraw",
"toAddress": "TXYZ...abcd",
"amount": "100",
"currency": "trx.usdt",
"fee": "1",
"apiOrder": "AP2026070812345",
"userOrder": "W20260708-0001",
"withdrawType": "normal",
"message": "",
"txid": "9a1b2c3d...",
"orderStatus": "success"
}orderStatus 取值全表
| 取值 | 类型 | 含义 |
|---|---|---|
pendingConfirm | 中间态 | 订单已受理(已扣款建单),等待平台确认处理 |
pendingTransfer | 中间态 | 等待/正在执行链上转账(normal 流程) |
pendingFinancialConfirmation | 中间态 | 等待财务确认放行(仅 withdrawType=financialConfirmation 流程) |
pendingCallback | 中间态 | 链上处理已完成,等待回调商户 |
success | 终态 | 提现成功 |
WithdrawRefund | 终态 | 提现被拒绝/退款,金额已退回商户余额 |
fail | 终态 | 提现失败 |
两条流程的状态流转(状态机图见创建提现单页面):
- 普通提现(normal):
pendingConfirm→pendingTransfer→pendingCallback→success - 财务确认(financialConfirmation):
pendingConfirm→pendingFinancialConfirmation→pendingCallback→success - 任一流程都可能进入
WithdrawRefund(被拒绝退款)或fail(失败)终态。
以终态为准判定业务结果
中间态(pending*)的具体名称与流转细节可能随平台流程调整,请勿在业务逻辑中硬编码依赖中间态;判定订单结果只应依据三个终态:success / WithdrawRefund / fail。提现的最终结果同时会通过提现状态回调异步通知,本接口适合作为回调的兜底与对账手段。
错误
message | 说明 |
|---|---|
withdrawOrderNotExist | 按 userOrder 查无此提现单(订单号错误,或该订单不属于当前商户号) |
失败时响应为 { "code": 9999, "data": "", "message": "withdrawOrderNotExist" }。其余通用错误(signatureFailed、tokenExpired 等)见错误码。
调用示例
php
require 'AnonyV2Client.php';
$client = new AnonyV2Client($appId, $serverPublicKeyB64, $merchantPrivateKeyB64);
$token = $client->getToken($secret);
$res = $client->post('checkWithdrawOrder', ['userOrder' => 'W20260708-0001'], $token);
// $res['data'] 已自动验签+解密
$order = $res['data'];
if (in_array($order['orderStatus'], ['success', 'WithdrawRefund', 'fail'], true)) {
// 终态,可据此更新本地订单
}python
from anony_v2 import AnonyV2Client, auth_header
import requests
c = AnonyV2Client(app_id, server_pub_b64, merchant_priv_b64)
# 取 token(响应仍是加密+签名信封,需验签+解密)
tr = requests.post(c.base_url + "getToken",
headers={"ANONY-APP-ID": str(app_id),
"Authorization": auth_header(app_id, secret)})
tb = tr.json()
token = c.verify_response(tb["data"], tr.headers["ANONY-TIMESTAMP"],
tr.headers["ANONY-NONCE"], tr.headers["ANONY-SIGN"])["token"]
req = c.build_request({"userOrder": "W20260708-0001"}, token)
r = requests.post(c.base_url + "checkWithdrawOrder", data=req["body"], headers=req["headers"])
body = r.json()
if body["code"] == 10000:
order = c.verify_response(body["data"], r.headers["ANONY-TIMESTAMP"],
r.headers["ANONY-NONCE"], r.headers["ANONY-SIGN"])
print(order["orderStatus"], order["txid"])
else:
print(body["message"]) # 例如 withdrawOrderNotExistjs
const { AnonyV2Client } = require('./anony_v2');
const c = new AnonyV2Client(appId, serverPubB64, merchantPrivB64);
const token = await c.getToken(secret); // Node ≥18
const req = c.buildRequest({ userOrder: 'W20260708-0001' }, token);
const r = await fetch(c.baseUrl + 'checkWithdrawOrder', {
method: 'POST', body: req.body, headers: req.headers,
});
const body = await r.json();
if (body.code === 10000) {
const order = c.verifyResponse(body.data, r.headers.get('anony-timestamp'),
r.headers.get('anony-nonce'), r.headers.get('anony-sign'));
console.log(order.orderStatus, order.txid);
} else {
console.log(body.message); // 例如 withdrawOrderNotExist
}相关页面
- 创建提现单 createWithdrawOrder — 提现单创建、参数校验与状态机图
- 回调机制 — 提现状态回调字段与验签解密步骤
- 错误码 — 全部错误码与排查