Files
zyt/admin/PAYMENT_API_ENDPOINTS.md
T
2026-03-11 14:33:49 +08:00

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 | 微信 |