POST · /api/v1/wallet/address/validate

校验地址

在执行提币操作前,校验目标地址的格式是否合法,并返回标准化后的地址形式。推荐在用户填写提币地址时实时调用。

提币前务必校验

链上转账不可撤销。强烈建议在用户输入提币地址后,立即调用本接口确认地址合法性, 并使用响应中 normalizedAddress 替代用户原始输入作为最终提币目标。
POST/api/v1/wallet/address/validate HMAC

Header 参数

X-Api-Key
string required
应用 apiKey。沙箱前缀 pk_test_,正式 pk_live_
例: pk_test_4f9d8ab1c0e74...
X-Timestamp
integer (UNIX 毫秒) required
请求发起时刻的 UNIX 毫秒时间戳(13 位整数)。与服务端时差不能超过 ±300000ms(5 分钟)。
例: 1746450000000
X-Nonce
string required
本次请求的随机串,建议 UUID v4 或 16 字节 hex。同一 (apiKey, nonce) 在 10 分钟窗口内不可重复。
例: 8e3a1c2f7b6d4a90
X-Signature
string required
HMAC-SHA256 签名(小写 hex,64 字符)。算法:HMAC(secret, METHOD + "\n" + PATH + "\n" + ts + "\n" + nonce + "\n" + SHA256(body))。详见 鉴权章节
例: 6e4a8c1f...(64 字符)

Body 参数

application/json
chainCode
string required
公链 code,决定校验规则(格式、校验和算法等)。
例: ETH
address
string required
待校验的链上地址字符串。
例: 0xAbC123...
memo
string optional
Memo 链(XRP / XLM / EOS 等)下的 memo/tag,非 memo 链传 null 或省略。
例: null

示例

{
  "chainCode": "ETH",
  "address": "0xAbC123...",
  "memo": null
}

请求示例

# 签名算法(stringToSign / 4 个 header)见 /docs/api/auth
API_KEY=pk_test_xxx
SECRET=sk_test_xxx
METHOD=POST
REQ_PATH=/api/v1/wallet/address/validate
BODY='{"chainCode":"ETH","address":"0xAbC123...","memo":null}'
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"

响应

Response
200OK
{
  "code": 0,
  "data": {
    "valid": true,
    "reason": null,
    "normalizedAddress": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B"
  },
  "msg": ""
}

data 字段说明

valid
boolean required
true = 地址格式合法,可安全用于提币;false = 非法,请拒绝用户继续操作。
reason
string? optional
valid=false 时返回失败原因描述;valid=true 时为 null
normalizedAddress
string required
标准化后的地址。EVM 链返回 EIP-55 校验和地址(大小写混合),其它链原样返回。建议使用此字段存储,避免大小写不一致导致对账差异。

EVM 地址大小写

以太坊地址对大小写不敏感,但 EIP-55 定义了一套基于校验和的大小写混合形式, 可用于检测手误输入。normalizedAddress 对 EVM 系始终返回 EIP-55 形式, 存库时以此为准。

下一步