GET · /api/v1/wallet/transaction/status
查询链上交易状态
按 chainCode + txHash 向链上节点实时查询交易状态、确认数及出块时间。适合自助核查某笔 tx 是否成功上链。
实时查询,非快照
本接口直接调用对应链的 RPC 节点查询,返回当前最新确认状态。 对于刚广播的交易,status 可能短暂为 PENDING, 请按需轮询(建议间隔 ≥ 5 秒)。 /api/v1/wallet/transaction/status HMAC 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 字符) |
Query 参数
chainCodestring required | 公链 code,必须是该应用已开通的公链。 例: ETH |
txHashstring required | 链上交易哈希(含 0x 前缀,EVM 系;其他链按原始格式传)。 例: 0x9ab8c4f7e2d1a3b0... |
请求示例
# 签名算法(stringToSign / 4 个 header)见 /docs/api/auth
API_KEY=pk_live_xxx
SECRET=sk_live_xxx
METHOD=GET
REQ_PATH=/api/v1/wallet/transaction/status
QUERY="chainCode=ETH&txHash=0x9ab8c4f7e2d1a3b0..."
TS=$(( $(date +%s) * 1000 ))
NONCE=$(uuidgen | tr -d '-' | tr '[:upper:]' '[:lower:]')
BODY_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
# 签名 PATH 不含 query string
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 "https://api.pqpa.com$REQ_PATH?$QUERY" \
-H "X-Api-Key: $API_KEY" \
-H "X-Timestamp: $TS" \
-H "X-Nonce: $NONCE" \
-H "X-Signature: $SIG"响应
200OK
{
"code": 0,
"data": {
"chainCode": "ETH",
"txHash": "0x9ab8c4f7e2d1a3b0...",
"exists": true,
"onChain": true,
"success": true,
"blockHeight": 19283746,
"confirmations": 32,
"blockTime": "2026-05-05T12:34:56",
"status": "SUCCESS",
"rawError": null
},
"msg": ""
}data 字段说明
chainCodestring required | 公链 code。 例: ETH |
txHashstring required | 交易哈希,原样回显。 |
existsboolean required | 节点是否找到该交易( false 时其余状态字段均为默认值)。 例: true |
onChainboolean required | 是否已被打包上链。 例: true |
successboolean required | 链上执行是否成功(仅 onChain=true 时有意义)。 例: true |
blockHeightinteger | null required | 所在块高;交易尚未上链时为 null。 例: 19283746 |
confirmationsinteger required | 当前确认数; exists=false 时为 0。 例: 32 |
blockTimestring | null required | 出块时间( LocalDateTime,格式 yyyy-MM-ddTHH:mm:ss);未上链时为 null。 例: "2026-05-05T12:34:56" |
statusstring required | 交易状态枚举,见下方说明。 例: SUCCESS取值: NOT_FOUNDPENDINGSUCCESSFAILEDERROR |
rawErrorstring | null required | 链上或 RPC 返回的原始错误信息; status=ERROR / FAILED 时可能有值,其余为 null。 |
status 枚举说明
| 值 | 含义 |
|---|---|
| NOT_FOUND | 节点未找到该交易(可能还未广播或 hash 有误)。 |
| PENDING | 已在节点内存池中,尚未被打包进区块。 |
| SUCCESS | 已上链且链上执行成功。 |
| FAILED | 已上链但链上执行失败(如合约 revert),rawError 含原因。 |
| ERROR | RPC 查询过程本身出错,非交易本身状态问题,rawError 含详情。 |