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 PHP传10000,250.75 THB传25075。各币种最小单位见 余额与币种。 - 币种:
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注册新公钥并停用旧版本。 - 回调必须先验签后处理,金额与本地订单核对一致后再入账。
- 除回调外,请用查询接口主动对账,不要只依赖通知。