API REFERENCE

派付 API 总览

一套 API 串通 BTC / EVM / TRON / SOL 全家桶。所有接口走 HMAC-SHA256 鉴权,所有响应是 JSON 且统一 CommonResult 封装,时间戳是 UNIX 毫秒。

Base URL

https://api.pqpa.com

沙箱 / 正式由 apiKey 前缀区分:pk_test_ / pk_live_

当前版本

v1

路径前缀:/api/v1/... · Breaking change 会以新版本号发布

先做哪一步?

新接入推荐顺序: 学会 HMAC 签名调应用自查接口验证签名链路创建一个充值地址配回调收第一笔到账 → 把 pk_test_ 换成 pk_live_ 切正式。

按资源浏览

每一类资源对应一组开放 API 端点,路径形如 /api/v1/<biz>/<resource>/<action>

全站约定

请求格式

  • 所有请求都通过 HTTPS 调用,不接受明文 HTTP。
  • 写接口 (POST) 的 body 是 application/json; charset=utf-8UTF-8 编码
  • 读接口 (GET) 用 query string;query 参数参与签名。
  • 必须带 4 个 HMAC header:X-Api-KeyX-TimestampX-NonceX-Signature。详见 鉴权章节

响应格式

派付的所有响应都是 JSON,并统一按 CommonResult 封装:

// 成功(业务码 code = 0)
{
  "code": 0,
  "data": { ... },
  "msg":  ""
}

// 失败(HTTP 仍是 200,业务码 code != 0)
{
  "code": 1007002000,
  "data": null,
  "msg":  "签名校验失败:请检查 apiSecret 与待签字符串拼装顺序"
}

为什么 200 响应里还有 code?

HTTP status 给基础设施层(CDN / 网关 / 监控)用;业务 code 给应用层用。 开放 API 的业务异常统一以 HTTP 200 + code != 0 + msg 返回; 做错误分支时请按 code 判断,不要按 msg 文案(文案会随版本调整)。

幂等

会产生副作用的接口都有业务幂等键

  • 创建充值地址:按 (应用, chainCode, externalUserId) 幂等,重复调返回已有地址。
  • 发起提现:按 (应用, appOrderNo) 幂等,重复 appOrderNo 返回 1007004000 WITHDRAW_BUSINESS_DUPLICATE

分页

列表接口走 pageNo(从 1 开始)+ pageSize,响应是 PageResult

GET /api/v1/wallet/recharge/page?pageNo=1&pageSize=20

// 响应
{
  "code": 0,
  "data": {
    "list":  [ ... ],
    "total": 127
  },
  "msg": ""
}

pageSize 上限是 200,传更大值会被拒绝。

时间戳、金额与地址

  • 签名用的 X-TimestampUNIX 毫秒(13 位整数);响应里的业务时间字段是 ISO 形式的本地时间(如 "2026-05-05T12:34:56")。
  • 所有金额都是字符串形式的精确 decimal(如 "150.000000"),别用 number——浮点丢精度。
  • 所有地址是各链原始大小写形式(EVM 走 EIP-55 校验和、TRON 走 Base58)。

错误码

业务码(code)是稳定常量,前 3 位 1-007 = 钱包平台。做错误分支时请按 code 判断,不要按 msg 文案

code名称说明
1007002001SIGN_HEADER_MISSING4 个签名 header 缺一;msg 会指明缺哪个。
1007002000SIGN_INVALID签名校验失败:检查 stringToSign 拼接(含换行符)、apiSecret、SHA256(body) 小写。
1007002002SIGN_TIMESTAMP_EXPIREDX-Timestamp 与服务器时差 > 5 分钟;检查时区 / NTP 同步,并确认用的是毫秒。
1007002004SIGN_TIMESTAMP_INVALIDX-Timestamp 不是合法毫秒时间戳(应为 13 位纯数字)。
1007002003SIGN_NONCE_DUPLICATE同一 (apiKey, nonce) 在 10 分钟内重复;nonce 必须真随机,不要用计数器。
1007001004APP_KEY_NOT_FOUNDX-Api-Key 不存在或与任何应用都不匹配。
1007001002APPLICATION_DISABLED应用已被停用,请联系平台管理员重新启用。
1007001006APPLICATION_IP_NOT_ALLOWED当前来源 IP 不在应用开放 API 白名单内。
1007003005CHAIN_NOT_ENABLED_BY_APP应用未开通该链;请先在管理后台启用对应代币。
1007004000WITHDRAW_BUSINESS_DUPLICATEappOrderNo 已存在;商户业务单号需全局唯一。
1007004002WITHDRAW_BALANCE_INSUFFICIENTHOT / WITHDRAW 钱包余额不足。
1007004003WITHDRAW_FEE_INSUFFICIENT出币地址原生币不够支付 gas。
1007004004WITHDRAW_RECORD_NOT_FOUND提现记录不存在或不属于当前应用(按 appOrderNo)。
1007004011RECHARGE_RECORD_NOT_FOUND充值记录不存在或不属于当前应用(按 id)。
1007011000WITHDRAW_NOT_IN_WHITELIST提现地址不在应用提现白名单内。

调试与排错

派付不强制使用 SDK——curl 也能跑通全部接口。每个端点页都给了 curl / Node.js / Python 三语言签名示例。

  • 签名怎么都对不上?先读 鉴权章节 的本地自检脚本,99% 是 stringToSign 拼接或时间戳单位问题。
  • 接入第一步建议先调 应用自查,它无业务副作用,能最快验证签名链路是否打通。
  • 服务端拒绝时,每个响应头都带 X-Trace-Id;记录它后 联系我们 可在服务端日志反查拒绝原因。