MERCHANT API DOCUMENTATION

商户 API 对接文档

接口版本 v1 · UTF-8 · application/json
HTTPS

1. 接入说明

请先从后台商户列表的“对接资料”获取商户号、商户密钥和接口地址。商户登录账号不参与 API 认证。

项目说明
生产协议HTTPS
字符编码UTF-8
数据格式JSON
金额大于 0,建议使用字符串保留两位小数

2. 认证与签名

每个请求必须携带以下请求头。时间戳使用 Unix 秒,允许服务器时间前后误差 300 秒;Nonce 不少于 12 个字符,且 10 分钟内不可重复。

请求头说明
X-Merchant-No后台分配的商户号
X-TimestampUnix 秒级时间戳
X-Nonce每次请求唯一随机字符串
X-Signature小写十六进制 HMAC-SHA256 签名

待签名原文

METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + 原始请求体

使用商户密钥执行 HMAC-SHA256。GET 请求的原始请求体为空;POST 请求必须使用发送前未经改写的原始 JSON 字节。

3. 创建订单

POST/openapi/v1/orders
字段类型必填说明
merchant_order_nostring是商户订单号,同一商户内不可重复,最长 64 位
amountnumber/string是订单金额,必须大于 0
product_codestring是后台分配并启用的产品编码

请求示例

{
  "merchant_order_no": "T202610070001",
  "amount": "100.00",
  "product_code": "1010"
}

成功响应

{
  "code": 0,
  "message": "success",
  "data": {
    "system_no": "SF202610070930001234",
    "merchant_order_no": "T202610070001",
    "status": "pending",
    "payment_url": "https://upstream.example/pay/abc123"
  }
}

商户应将客户跳转到 payment_url 完成支付。系统会先匹配金额,再按权重从高到低请求上游;当前通道拉空或超时时自动尝试下一通道。

全部通道拉空响应(HTTP 502)

{
  "code": 50201,
  "message": "empty order",
  "data": {
    "system_no": "SF202610070930001234",
    "merchant_order_no": "T202610070001",
    "status": "failed",
    "reason": "empty_order"
  }
}

4. 查询订单

GET/openapi/v1/orders/{system_no}

system_no 为创建订单成功后返回的平台系统单号。GET 请求参与签名的请求体为空。

成功响应

{
  "code": 0,
  "message": "success",
  "data": {
    "system_no": "SF202610070930001234",
    "merchant_order_no": "T202610070001",
    "amount": "100.00",
    "status": "paid",
    "created_at": "2026-10-07T09:30:00+00:00"
  }
}
当前版本暂未启用主动订单回调,商户应通过查单接口确认最终状态;后台的回调地址是预留配置。

5. 状态与错误

订单状态说明
pending等待支付
paid支付成功
HTTP 状态码说明
400请求参数错误
401商户号、时间戳或签名无效
403来源 IP 不在白名单
404订单或产品不存在
409Nonce 重复、商户订单号重复或暂无可用通道

6. 安全说明

重置商户密钥后旧密钥立即失效,商户必须同步更新签名密钥,否则后续请求将返回签名错误。

费率查询接口

GET/openapi/v1/rates

返回当前商户已开通、产品与通道均启用的产品费率。该接口使用与订单接口相同的签名请求头,GET 请求体为空。

成功响应

{
  "code": 0,
  "message": "success",
  "data": [
    {
      "code": "1010",
      "name": "支付宝原生",
      "fee_rate": "18.000"
    }
  ]
}

fee_rate 的单位为百分比;例如 18.000 表示 18%。接口不会返回内部通道或供应商信息。