|
|
@@ -31,6 +31,9 @@ POST /payment/openapi/alipay/order/create
|
|
|
| `out_biz_no` | string | 否 | 你自己的订单号,≤64 字符,原样存下供你查询 |
|
|
|
| `ip` | string | 是 | 顾客用户端ip |
|
|
|
| `pay_timeout` | int | 否 | 支付过期时间,取值 2–60(单位由上游定义,平台原样透传) |
|
|
|
+| `notify_url` | string | 否 | **本单专属回调地址**,≤512 字符。传了 ⇒ 这笔订单**整个生命周期**的回调全推它;不传 ⇒ 按 10.4 的默认地址 |
|
|
|
+
|
|
|
+> ℹ️ **`notify_url` 是「本单专属」的回调地址(2026-10-14 新增)。** 传了它,这笔订单**每一次回调都只推这个地址**(支付成功、退款各态、超时关闭……一切状态变化),不再看你 API Key 上配的 `return_url`。地址在下单时记到订单上,**下单之后再改 Key / 租户配置都不影响这一单**;不传(或传空白)则完全沿用旧口径(见 10.4 的三级优先级)。
|
|
|
|
|
|
**响应**(B 型,`data` 内)
|
|
|
|
|
|
@@ -147,10 +150,16 @@ POST /payment/openapi/alipay/refund
|
|
|
|
|
|
订单状态变化时,平台会向你推送一条回调。
|
|
|
|
|
|
-**回调地址取自你这把 API Key 上配置的 `return_url`**(未配置时退回该租户的默认回调地址)。**没配时平台不会丢下这笔** —— 记一次推送失败并继续重试(见下),你补配地址后未达上限的订单仍会收到;但尽快补配,超过上限就不会再推了,届时只能靠主动查询(10.2)拿结果。
|
|
|
+**回调地址按下单时的快照取,三级优先级(2026-10-14 起)**:
|
|
|
+
|
|
|
+1. **下单时传了 `notify_url`(10.1)⇒ 这笔订单整个生命周期只推它。** 地址在下单时冻结在这笔订单上,之后你改 Key 配置、改租户配置都不影响这一单;
|
|
|
+2. 没传 ⇒ 你这把 API Key(下单用的那把)上配置的 `return_url` —— 这级是**推送时现读**的,不是下单时快照:推的时候 Key 上配的是什么就推什么;
|
|
|
+3. Key 上也没配 ⇒ 该租户的默认回调地址。
|
|
|
+
|
|
|
+**三级全空时平台不会丢下这笔** —— 记一次推送失败并继续重试(见下),你补配地址后未达上限的订单仍会收到;但尽快补配,超过上限就不会再推了,届时只能靠主动查询(10.2)拿结果。
|
|
|
|
|
|
```
|
|
|
-POST <你的 return_url>
|
|
|
+POST <你的回调地址>
|
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
```
|
|
|
|
|
|
@@ -242,6 +251,7 @@ Content-Type: application/x-www-form-urlencoded
|
|
|
- [ ] 拿到了 `pay_url` 并能渲染成二维码
|
|
|
- [ ] 按 `trade_status` 的**数字字符串**分支处理(`"1"` 才是钱到账)
|
|
|
- [ ] `trade_status = "16"`(超时关闭)按未收款终态处理:这一单不会再有支付,不用等、不用主动查
|
|
|
+- [ ] 回调地址按需选:单笔指定用下单的 `notify_url`,全局兜底配 API Key 的 `return_url`(三级优先级见 10.4)
|
|
|
- [ ] 回调接口能处理表单编码,并把 `content` **再解析一次** JSON
|
|
|
- [ ] 回调按 `out_biz_no` 做幂等
|
|
|
- [ ] 对长期停在 `"0"` 的订单有主动查询兜底
|