Appearance
支付接口
支付模块负责完成统一下单、查单、关单和支付通知。
接口清单
| 接口 | 方法 | 说明 |
|---|---|---|
/api/pay/unifiedOrder | POST | 统一下单 |
/api/pay/query | POST | 查询订单 |
/api/pay/close | POST | 关闭订单 |
notifyUrl | POST | 支付通知 |
统一下单核心字段
| 字段 | 必填 | 说明 |
|---|---|---|
mchOrderNo | 是 | 商户订单号,需保证唯一 |
wayCode | 是 | 支付方式编码,如 WX_NATIVE、ALI_WAP、WX_JSAPI |
amount | 是 | 金额,单位分 |
currency | 是 | 货币代码,建议使用 CNY |
subject | 是 | 订单标题 |
body | 否 | 订单描述 |
notifyUrl | 否 | 支付成功后的异步通知地址 |
returnUrl | 否 | 同步跳转地址 |
clientIp | 否 | 客户端 IP |
channelExtra | 否 | 渠道扩展参数,JSON 字符串 |
divisionMode | 否 | 分账模式,需要分账时可提前指定 |
支付参数返回
统一下单成功后,平台会根据支付场景返回不同类型的支付参数:
payDataType | 说明 |
|---|---|
payUrl | 跳转链接 |
form | 自动提交的表单 |
wxapp | 微信 App / 小程序拉起参数 |
aliapp | 支付宝 App 拉起参数 |
codeUrl | 二维码链接 |
codeImgUrl | 二维码图片地址 |
none | 无额外支付参数 |
对于二维码或 WAP 场景,可通过 channelExtra 指定期望返回类型,例如:
json
{
"payDataType": "codeImgUrl"
}统一下单示例
json
{
"mchNo": "M202604230001",
"appId": "APP202604230001",
"mchOrderNo": "ORD202604230001",
"wayCode": "ALI_WAP",
"amount": 800,
"currency": "CNY",
"subject": "商品标题",
"body": "商品描述",
"clientIp": "192.168.1.10",
"notifyUrl": "https://merchant.example.com/notify/pay",
"returnUrl": "https://merchant.example.com/result",
"channelExtra": "{\"payDataType\":\"form\"}",
"divisionMode": 1,
"version": "1.0",
"reqTime": 1713849600000,
"signType": "MD5",
"sign": "YOUR_SIGN"
}json
{
"code": 0,
"msg": "SUCCESS",
"sign": "RESPONSE_SIGN",
"data": {
"payOrderId": "P202604230001",
"mchOrderNo": "ORD202604230001",
"orderState": 1,
"payDataType": "form",
"payData": "<form>...</form>"
}
}查询与关闭订单
查询和关闭通常只需要平台订单号或商户订单号二选一:
| 字段 | 说明 |
|---|---|
payOrderId | 平台支付订单号 |
mchOrderNo | 商户支付订单号 |
订单状态建议
| 状态值 | 含义 |
|---|---|
0 | 订单生成 |
1 | 支付中 |
2 | 支付成功 |
3 | 支付失败 |
4 | 已撤销 |
5 | 已退款 |
6 | 订单关闭 |
支付通知
支付成功后,平台会向 notifyUrl 发送通知。常见参数包括:
payOrderIdmchOrderNomchNoappIdifCodeamountstatecreatedAtsuccessTimesign
通知处理完成后返回 success 即可,详细处理建议见 回调通知。