Skip to content

SunPay 商户接口文档

文档版本 v3 · RSA2 签名 · JSON over HTTPS · 金额一律最小单位整数

本文档是 SunPay 商户接口的权威规范。建议按 接入流程签名与鉴权代收 / 代付 的顺序阅读。

基本约定

  • 协议:HTTPS + JSON(Content-Type: application/json; charset=utf-8),UTF-8 编码。
  • Base URL:https://{api-domain}/openapi/v1(沙箱与生产为不同域名,以开通信息为准)。
  • 金额:一律整数最小单位,禁止小数。PHP 用 centavo、THB 用 satang(均为 1/100):100.00 PHP10000,250.75 THB25075。各币种最小单位见 余额与币种
  • 币种:currency 为 ISO 4217 三字母大写。下单类请求必带;余额查询可选(缺省按 PHP);查询接口不传,响应返回原订单的币种。你可用的币种以平台为你开通的产品为准;下单传未知/未开通币种统一返回 1001,绝不会落到其它币种。
  • 时间:timestamp 用 Unix 秒(UTC)。
  • 商户订单号:mch_order_no 长度 ≤ 64,建议仅用字母、数字、下划线和中划线。

统一响应

所有接口返回统一包裹,code="0" 为成功:

json
{ "code": "0", "msg": "OK", "data": { } }

错误码见 订单状态与错误码

幂等与去重

  • 下单:同一 merchant_no + mch_order_no,关键参数(金额/币种/产品/收款信息)完全一致时返回原订单结果,不重复创建;参数不一致返回 2001
  • 同参重试不受下单后配置变化影响:产品/币种/通道即使其后停用,已建订单的同参重试仍返回原单——网络超时后放心用同参数重发。
  • 通知:同一订单的同类通知可能到达多次,去重键 = platform_order_no + 通知类型(普通终态通知与代付冲正通知是两类,见 代付文档);同类已处理过直接回 success

安全须知

  • 私钥只能在服务端使用:不进前端/JS、不进日志、不进代码仓库、不放弱权限目录。
  • 怀疑私钥泄露,立即用新 key_version 注册新公钥并停用旧版本。
  • 回调必须先验签后处理,金额与本地订单核对一致后再入账。
  • 除回调外,请用查询接口主动对账,不要只依赖通知。