feat: submit provider refunds

This commit is contained in:
Codex
2026-06-29 05:05:42 +08:00
parent 24fd788b48
commit 8d752881c1
12 changed files with 397 additions and 23 deletions

View File

@@ -903,8 +903,9 @@ body: {
POST /api/commerce/refunds/status
body: {
"refundId": "<refundId>",
"action": "approve | reject | mark_processing | mark_succeeded | mark_failed | cancel",
"action": "approve | reject | submit_provider_refund | mark_processing | mark_succeeded | mark_failed | cancel",
"providerRefundNo": "<支付平台退款单号,可选>",
"providerNotifyUrl": "<微信退款通知地址,可选>",
"note": "<处理备注>"
}
```
@@ -913,6 +914,7 @@ body: {
```text
requested -> approved -> processing -> succeeded
requested -> approved -> submit_provider_refund -> processing/succeeded
requested/approved -> rejected
requested/approved -> cancelled
approved/processing -> failed
@@ -924,7 +926,9 @@ approved/processing -> failed
- `refundNo` 是幂等键;同一订单同一金额重复提交会返回原退款申请。
- 后端会限制累计退款金额不能超过实付金额。
- 全额退款成功后订单和支付会进入 `refunded`,相关订单权益会被置为 `revoked`;部分退款进入 `partially_refunded`,默认不撤销权益。
- 当前接口完成内部退款状态机和人工成功登记;真实微信/支付宝退款 API、自动对账和补偿 worker 后续接入。前端不要假设点击退款后已经实时调用支付平台
- `submit_provider_refund` 会由后端使用租户支付账户密钥调用微信/支付宝前端不要保存商户私钥、API v3 key 或支付宝应用私钥
- 微信退款通常先进入 `processing`,需要后续退款通知/查询确认;支付宝普通退款成功会同步进入 `succeeded`。前端应按接口返回状态展示,不要假设点击后立即到账。
- 退款通知/查询确认、自动对账和补偿 worker 后续接入;当前生产联调时仍需运营后台保留人工确认/失败登记入口。
### 激活码预检查与兑换