主题
申请退款
POST /api/refund/refundOrder
需要公共签名参数。退款可能先等待分账资金回退,接口返回不保证主退款已完成。
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| payOrderId | string | 二选一 | 原支付订单号,优先使用 |
| mchOrderNo | string | 二选一 | 原商户支付订单号 |
| mchRefundNo | string | 是 | 唯一商户退款单号 |
| refundAmount | integer | 是 | 退款金额,单位分,大于 0 且不超过可退余额 |
| refundReason | string | 是 | 非空退款原因 |
| notifyUrl | string | 否 | HTTP(S) 地址;当前仅保存,尚未实现商户退款通知投递 |
| extParam | string | 否 | 商户附加文本 |
json
{
"mchNo": "M_DEMO", "appId": "APP_DEMO", "payOrderId": "P_DEMO",
"mchRefundNo": "REFUND_DEMO_001", "refundAmount": 100,
"refundReason": "用户取消订单", "sign": "实际签名"
}业务约束
原支付单须处于支付成功状态,未全额退款且无在途退款。分账处理中是否允许退款取决于渠道阶段;部分渠道需等分账终态,部分可停止尚未执行的结算。已分账资金可能需要先回退,再发起主退款。
重复退款单号会被拒绝。超时后先查询原退款单,不要盲目创建第二笔退款。退款明确失败且未发生资金回退或成功退款时,系统恢复原结算排期;未知状态不会触发恢复。
响应 data
| 字段 | 类型 | 说明 |
|---|---|---|
| refundOrderId、mchRefundNo | string | 平台、商户退款单号 |
| payAmount | integer | 原支付金额,分 |
| refundAmount | integer | 本次退款金额,分 |
| state | integer | 退款状态:0 创建、1 退款中、2 成功、3 失败、4 关闭 |
| divisionReturnState | integer | 分账回退状态:0 无需/未创建、1 待回退、2 处理中、3 成功、4 失败 |
| divisionReturnAmount | integer | 分账回退金额,分 |
| channelOrderNo、errCode、errMsg | string / null | 渠道退款号与错误信息 |
json
{
"code": 0,
"data": {
"refundOrderId": "R_DEMO", "mchRefundNo": "REFUND_DEMO_001",
"payAmount": 100, "refundAmount": 100, "state": 1,
"divisionReturnState": 0, "divisionReturnAmount": 0,
"channelOrderNo": null, "errCode": null, "errMsg": null
},
"sign": "对data计算的签名"
}以 state=2 为主退款成功依据;分账回退成功不代表主退款成功。当前请使用 退款查询 确认最终结果。