|
@@ -9,7 +9,7 @@
|
|
|
|
|
|
|
|
## 1. 概述
|
|
## 1. 概述
|
|
|
|
|
|
|
|
-平台提供五类能力,共 10 个接口,分属**两条通道**。
|
|
|
|
|
|
|
+平台提供五类能力,共 11 个接口,分属**两条通道**。
|
|
|
|
|
|
|
|
**收付款通道 —— 路径前缀 `/payment/openapi/pay`(详解见 5)**
|
|
**收付款通道 —— 路径前缀 `/payment/openapi/pay`(详解见 5)**
|
|
|
|
|
|
|
@@ -22,6 +22,7 @@
|
|
|
| 撤销 | 撤销 / 关单 | `POST /payment/openapi/pay/order/close` |
|
|
| 撤销 | 撤销 / 关单 | `POST /payment/openapi/pay/order/close` |
|
|
|
| 退款 | 发起退款 | `POST /payment/openapi/pay/refund` |
|
|
| 退款 | 发起退款 | `POST /payment/openapi/pay/refund` |
|
|
|
| 退款 | 退款查询 | `POST /payment/openapi/pay/refund/query` |
|
|
| 退款 | 退款查询 | `POST /payment/openapi/pay/refund/query` |
|
|
|
|
|
+| 收款 | 收款链接 —— 生成一条**顾客自填金额**的收款页链接(桌牌 / 菜单用) | `POST /payment/openapi/pay/checkout/link` |
|
|
|
|
|
|
|
|
**门店与订单通道 —— 路径前缀 `/payment/openapi/har`(详解见 10)**
|
|
**门店与订单通道 —— 路径前缀 `/payment/openapi/har`(详解见 10)**
|
|
|
|
|
|
|
@@ -249,7 +250,7 @@ f6b153e6c542461ea27ab291c30a5737bdaea8bbf3c7bf03ccdbfe7132bf6a11
|
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-**B 型 —— 其余接口**(`order/query`、`order/close`、`refund`、`refund/query`,以及 10 章的 3 个接口)用统一信封:
|
|
|
|
|
|
|
+**B 型 —— 其余接口**(`order/query`、`order/close`、`refund`、`refund/query`、`checkout/link`,以及 10 章的 3 个接口)用统一信封:
|
|
|
|
|
|
|
|
```json
|
|
```json
|
|
|
{
|
|
{
|
|
@@ -581,6 +582,61 @@ POST /payment/openapi/pay/refund/query
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
|
|
+### 5.8 收款链接(顾客自填金额)
|
|
|
|
|
+
|
|
|
|
|
+生成一条**长期有效、可反复使用**的收款链接。打开它的是平台托管的收款页:顶部显示商户名,
|
|
|
|
|
+顾客**自己输入金额**,确认后平台按该商户发起一笔真实主扫,并把顾客送到支付页。
|
|
|
|
|
+
|
|
|
|
|
+适合固定门店 / 固定收款人的场景:打印成桌牌、放进公众号菜单、贴在电子发票页。
|
|
|
|
|
+典型的用法是把返回的 `url` **渲染成二维码**印出来。
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+POST /payment/openapi/pay/checkout/link
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**请求**
|
|
|
|
|
+
|
|
|
|
|
+| 字段 | 类型 | 必填 | 说明 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| `merchant_code` | string | 否 | 这条链接收到哪个商户名下,规则同 5.1 |
|
|
|
|
|
+| `enterprise_id` | string | 否 | 已停用,传了会被拒绝(同 2 章) |
|
|
|
|
|
+
|
|
|
|
|
+**响应**(B 型,`data` 内)
|
|
|
|
|
+
|
|
|
|
|
+| 字段 | 说明 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| `mch_no` | 乐收赢商户号 |
|
|
|
|
|
+| `merchant_name` | 打开链接时顾客看到的商户名(**生成当时的快照**,商户改名后重新取一次即可刷新) |
|
|
|
|
|
+| `url` | 完整收款链接,形如 `https://<域名>/#/checkout/<token>` |
|
|
|
|
|
+
|
|
|
|
|
+> **幂等**:同一个商户反复调用返回**同一条** `url`。链接是要印出来贴出去的,
|
|
|
|
|
+> 每取一次换一个 token 等于让已经发出去的那些作废。本接口首次调用会**建立一条记录**,
|
|
|
|
|
+> 之后每次都返回它。
|
|
|
|
|
+
|
|
|
|
|
+**它和你自己的订单号没有关系**
|
|
|
|
|
+
|
|
|
|
|
+- 本接口**不产生订单**,也不接受金额 —— 金额由顾客在页面上输入(最低 1 元)。
|
|
|
|
|
+ 所以这条链接**不能**用来「收固定的 100 元」;要收指定金额请用 5.2。
|
|
|
|
|
+- 订单在顾客按下确认的那一刻才创建,单号由平台生成(以 `CS` 开头),
|
|
|
|
|
+ **不会**出现在本接口的响应里,也不来自你方。
|
|
|
|
|
+- 因此这条路收进来的钱**无法用你方订单号对账**。本接口也不接受 `notify_url`:
|
|
|
|
|
+ 这类订单的成交通知按第 7 章投递到你方配置的默认回调地址。
|
|
|
|
|
+ 它们同时会出现在平台管理端的订单列表里,可按商户号与时间核对。
|
|
|
|
|
+
|
|
|
|
|
+> ⚠️ **事先想清楚这一点再用**:拿到链接的**任何人**都能发起一笔支付,金额由发起人自己填。
|
|
|
|
|
+> 它适合「谁都可以往这个商户付钱、付多少自己定」的场景,不适合「这笔订单该收多少钱」。
|
|
|
|
|
+
|
|
|
|
|
+**与 5.2 二维码支付的区别**
|
|
|
|
|
+
|
|
|
|
|
+| | 5.2 二维码支付 | 5.8 收款链接 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 谁决定金额 | 你(接口参数 `total_amount`) | 顾客(在页面上输入) |
|
|
|
|
|
+| 单号从哪来 | 你传的 `out_trade_no` | 平台生成,`CS` 开头 |
|
|
|
|
|
+| 一张能用几次 | 一次,默认 15 分钟过期 | 长期有效,无限次 |
|
|
|
|
|
+| 谁来打开 | 顾客扫你做出来的码 | 顾客点开链接(或扫你把 `url` 做出来的码) |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
## 6. 状态说明
|
|
## 6. 状态说明
|
|
|
|
|
|
|
|
### 订单状态
|
|
### 订单状态
|
|
@@ -743,6 +799,12 @@ Content-Type: application/x-www-form-urlencoded
|
|
|
**Q:一笔订单能退几次?**
|
|
**Q:一笔订单能退几次?**
|
|
|
不限次数,但同一时刻只允许一笔在途退款,且累计退款金额不得超过订单金额。
|
|
不限次数,但同一时刻只允许一笔在途退款,且累计退款金额不得超过订单金额。
|
|
|
|
|
|
|
|
|
|
+**Q:我用 5.8 取了收款链接,但顾客付完款我这边什么都不知道,也没有订单号?**
|
|
|
|
|
+正常。链接里的金额是顾客自己填的,单号由平台在顾客按下确认时才生成,两者都不经过你。
|
|
|
|
|
+这类收款请按「商户号 + 时间」在平台管理端的订单列表里核对(单号以 `CS` 开头),
|
|
|
|
|
+并把第 7 章的回调当成通知手段 —— 它不会带上你自己的订单号。
|
|
|
|
|
+需要「我心里有个号、收款能对上」的场景,用 5.2(主扫)或 5.1(被扫)。
|
|
|
|
|
+
|
|
|
**Q:回调丢了怎么办?**
|
|
**Q:回调丢了怎么办?**
|
|
|
平台最多重试 8 次。之后请主动调用 5.4 订单查询。建议你在自己的系统里对长时间处于 `CREATED` / `PAYING` 的订单做轮询兜底。
|
|
平台最多重试 8 次。之后请主动调用 5.4 订单查询。建议你在自己的系统里对长时间处于 `CREATED` / `PAYING` 的订单做轮询兜底。
|
|
|
|
|
|