435 lines
6.8 KiB
Markdown
435 lines
6.8 KiB
Markdown
# 支付API端点文档
|
|
|
|
## 支付相关API
|
|
|
|
### 1. 支付宝支付
|
|
|
|
**端点**: `POST /order.order/alipay`
|
|
|
|
**请求参数**:
|
|
|
|
#### 正常支付
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"order_no": "ORD20240101120000123456",
|
|
"amount": 100.00,
|
|
"payment_method": "alipay"
|
|
}
|
|
```
|
|
|
|
#### 补单支付
|
|
```json
|
|
{
|
|
"order_no": "ORD20240101120000123456",
|
|
"payment_method": "alipay",
|
|
"is_supplement": 1
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "success",
|
|
"data": {
|
|
"pay_url": "https://openapi.alipay.com/gateway.do?app_id=xxx&method=alipay.trade.page.pay&..."
|
|
}
|
|
}
|
|
```
|
|
|
|
**说明**:
|
|
- 返回支付宝支付URL
|
|
- 前端跳转到该URL进行支付
|
|
- 支付完成后支付宝会回调 `/api/order/alipay-notify`
|
|
|
|
---
|
|
|
|
### 2. 微信支付
|
|
|
|
**端点**: `POST /order.order/wechat`
|
|
|
|
**请求参数**:
|
|
|
|
#### 正常支付
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"order_no": "ORD20240101120000123456",
|
|
"amount": 100.00,
|
|
"payment_method": "wechat"
|
|
}
|
|
```
|
|
|
|
#### 补单支付
|
|
```json
|
|
{
|
|
"order_no": "ORD20240101120000123456",
|
|
"payment_method": "wechat",
|
|
"is_supplement": 1
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "success",
|
|
"data": {
|
|
"pay_url": "https://api.mch.weixin.qq.com/pay/unifiedorder",
|
|
"pay_data": {
|
|
"appid": "wx1234567890abcdef",
|
|
"mch_id": "1234567890",
|
|
"nonce_str": "abc123def456",
|
|
"body": "订单支付",
|
|
"out_trade_no": "ORD20240101120000123456",
|
|
"total_fee": 10000,
|
|
"spbill_create_ip": "192.168.1.1",
|
|
"notify_url": "https://yourdomain.com/api/order/wechat-notify",
|
|
"trade_type": "NATIVE",
|
|
"sign": "ABC123DEF456"
|
|
},
|
|
"order_no": "ORD20240101120000123456"
|
|
}
|
|
}
|
|
```
|
|
|
|
**说明**:
|
|
- 返回微信支付数据
|
|
- 前端需要将 `pay_data` 发送到微信支付API
|
|
- 或者使用 `pay_url` 和 `pay_data` 生成二维码
|
|
- 支付完成后微信会回调 `/api/order/wechat-notify`
|
|
|
|
---
|
|
|
|
### 3. 支付宝异步通知
|
|
|
|
**端点**: `POST /api/order/alipay-notify`
|
|
|
|
**请求参数** (由支付宝发送):
|
|
```
|
|
app_id=2021000000000000
|
|
method=alipay.trade.page.pay
|
|
charset=UTF-8
|
|
sign_type=RSA2
|
|
timestamp=2024-01-01 12:00:00
|
|
version=1.0
|
|
notify_url=https://yourdomain.com/api/order/alipay-notify
|
|
return_url=https://yourdomain.com/order
|
|
biz_content={"out_trade_no":"ORD20240101120000123456",...}
|
|
sign=ABC123DEF456...
|
|
trade_status=TRADE_SUCCESS
|
|
trade_no=2024010100000001
|
|
out_trade_no=ORD20240101120000123456
|
|
total_amount=100.00
|
|
```
|
|
|
|
**响应**:
|
|
```
|
|
success
|
|
```
|
|
|
|
**说明**:
|
|
- 支付宝会在支付完成后发送异步通知
|
|
- 后端验证签名和金额
|
|
- 更新订单状态为"已支付"
|
|
- 返回 `success` 表示处理成功
|
|
|
|
---
|
|
|
|
### 4. 微信异步通知
|
|
|
|
**端点**: `POST /api/order/wechat-notify`
|
|
|
|
**请求参数** (由微信发送,XML格式):
|
|
```xml
|
|
<xml>
|
|
<appid>wx1234567890abcdef</appid>
|
|
<mch_id>1234567890</mch_id>
|
|
<nonce_str>abc123def456</nonce_str>
|
|
<sign>ABC123DEF456</sign>
|
|
<result_code>SUCCESS</result_code>
|
|
<out_trade_no>ORD20240101120000123456</out_trade_no>
|
|
<total_fee>10000</total_fee>
|
|
<transaction_id>4200001234567890</transaction_id>
|
|
<trade_type>NATIVE</trade_type>
|
|
</xml>
|
|
```
|
|
|
|
**响应** (XML格式):
|
|
```xml
|
|
<xml>
|
|
<return_code><![CDATA[SUCCESS]]></return_code>
|
|
<return_msg><![CDATA[支付成功]]></return_msg>
|
|
</xml>
|
|
```
|
|
|
|
**说明**:
|
|
- 微信会在支付完成后发送异步通知
|
|
- 后端验证签名和金额
|
|
- 更新订单状态为"已支付"
|
|
- 返回 XML 格式的响应
|
|
|
|
---
|
|
|
|
## 其他订单API
|
|
|
|
### 5. 订单列表
|
|
|
|
**端点**: `GET /order.order/lists`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"page_no": 1,
|
|
"page_size": 10,
|
|
"order_no": "",
|
|
"patient_keyword": "",
|
|
"order_type": "",
|
|
"status": "",
|
|
"create_time_start": "",
|
|
"create_time_end": ""
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "success",
|
|
"data": {
|
|
"lists": [
|
|
{
|
|
"id": 1,
|
|
"order_no": "ORD20240101120000123456",
|
|
"patient": {
|
|
"id": 1,
|
|
"patient_name": "张三",
|
|
"phone": "13800000000"
|
|
},
|
|
"creator": {
|
|
"id": 1,
|
|
"name": "李四"
|
|
},
|
|
"order_type": 1,
|
|
"amount": 100.00,
|
|
"status": 2,
|
|
"payment_method": "alipay",
|
|
"payment_time": "2024-01-01 12:30:00",
|
|
"create_time": "2024-01-01 12:00:00"
|
|
}
|
|
],
|
|
"count": 100,
|
|
"page_no": 1,
|
|
"page_size": 10
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 6. 订单详情
|
|
|
|
**端点**: `POST /order.order/detail`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"id": 1
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "success",
|
|
"data": {
|
|
"id": 1,
|
|
"order_no": "ORD20240101120000123456",
|
|
"patient": {
|
|
"id": 1,
|
|
"patient_name": "张三",
|
|
"phone": "13800000000"
|
|
},
|
|
"creator": {
|
|
"id": 1,
|
|
"name": "李四"
|
|
},
|
|
"order_type": 1,
|
|
"amount": 100.00,
|
|
"status": 2,
|
|
"payment_method": "alipay",
|
|
"payment_time": "2024-01-01 12:30:00",
|
|
"create_time": "2024-01-01 12:00:00",
|
|
"remark": "备注信息"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 7. 创建订单
|
|
|
|
**端点**: `POST /order.order/create`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"patient_id": 1,
|
|
"order_type": 1,
|
|
"amount": 100.00,
|
|
"remark": "备注信息"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "创建成功",
|
|
"data": {
|
|
"id": 1,
|
|
"order_no": "ORD20240101120000123456",
|
|
"patient_id": 1,
|
|
"creator_id": 1,
|
|
"order_type": 1,
|
|
"amount": 100.00,
|
|
"status": 1,
|
|
"create_time": "2024-01-01 12:00:00"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 8. 编辑订单
|
|
|
|
**端点**: `POST /order.order/edit`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"remark": "新的备注信息"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "编辑成功"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 9. 取消订单
|
|
|
|
**端点**: `POST /order.order/cancel`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"id": 1
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "取消成功"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 10. 退款订单
|
|
|
|
**端点**: `POST /order.order/refund`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"id": 1
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "退款成功"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 11. 删除订单
|
|
|
|
**端点**: `POST /order.order/delete`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"id": 1
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"msg": "删除成功"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 错误响应
|
|
|
|
所有API在出错时返回以下格式:
|
|
|
|
```json
|
|
{
|
|
"code": 1,
|
|
"msg": "错误信息"
|
|
}
|
|
```
|
|
|
|
**常见错误**:
|
|
- `订单不存在` - 订单ID无效
|
|
- `订单状态不允许支付` - 订单已支付或已取消
|
|
- `签名验证失败` - 支付网关回调签名验证失败
|
|
- `金额不匹配` - 支付金额与订单金额不符
|
|
- `支付宝配置不完整` - 缺少支付宝配置
|
|
- `微信支付配置不完整` - 缺少微信支付配置
|
|
|
|
---
|
|
|
|
## 状态码说明
|
|
|
|
| 状态码 | 说明 |
|
|
|--------|------|
|
|
| 1 | 待支付 |
|
|
| 2 | 已支付 |
|
|
| 3 | 已取消 |
|
|
| 4 | 已退款 |
|
|
|
|
## 订单类型说明
|
|
|
|
| 类型码 | 说明 |
|
|
|--------|------|
|
|
| 1 | 挂号费 |
|
|
| 2 | 问诊费 |
|
|
| 3 | 药品费用 |
|
|
|
|
## 支付方式说明
|
|
|
|
| 方式 | 说明 |
|
|
|------|------|
|
|
| alipay | 支付宝 |
|
|
| wechat | 微信 |
|