localizer
ljw 2025-09-27 16:27:21 +08:00
parent 99c86f5d2e
commit e8c1580de7
1 changed files with 0 additions and 295 deletions

View File

@ -1,295 +0,0 @@
# PaymentController 接口文档
## 概述
PaymentController 是支付相关的控制器,提供订单支付、微信支付、退款等功能。
## 基础信息
- **基础路径**: `/payment`
- **控制器**: `PaymentController`
- **包路径**: `com.njzscloud.supervisory.order.controller`
---
## 接口列表
### 1. 发起支付
**接口路径**: `POST /payment/pay`
**功能描述**: 发起订单支付,支持公司支付和微信支付两种方式
**请求参数**:
```json
{
"orderId": 123456,
"paymentCategory": "company|wx",
"settleTotalMoney": 100.00,
"items": [
{
"id": 1,
"expenseItemName": "运费",
"settleMoney": 50.00
}
]
}
```
**参数说明**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| orderId | Long | 是 | 订单ID |
| paymentCategory | String | 是 | 支付方式company(公司支付)、wx(微信支付) |
| settleTotalMoney | BigDecimal | 是 | 结算总金额 |
| items | Array | 是 | 支付清单项 |
| items[].id | Long | 是 | 费用项ID |
| items[].expenseItemName | String | 是 | 费用项名称 |
| items[].settleMoney | BigDecimal | 是 | 结算金额 |
**响应示例**:
```json
{
"code": 0,
"success": true,
"msg": "成功",
"data": {
"prepayId": "wx123456789",
"timeStamp": "1234567890",
"nonceStr": "abc123",
"package": "prepay_id=wx123456789",
"signType": "RSA",
"paySign": "signature"
}
}
```
**错误码**:
- 参数不完整或支付总金额小于0
- 支付清单项不合法
- 支付方式不合法
- 订单不存在
- 公司账户余额不足
---
### 2. 微信支付回调
**接口路径**: `POST /payment/wechat/callback`
**功能描述**: 微信支付结果回调接口
**请求参数**:
```json
{
"id": "event_id",
"createTime": "2023-01-01T00:00:00+08:00",
"eventType": "TRANSACTION.SUCCESS",
"resource": {
"originalType": "transaction",
"ciphertext": "encrypted_data"
}
}
```
**响应示例**:
```
SUCCESS
```
**说明**: 此接口由微信支付平台调用,用于通知支付结果
---
### 3. 查询微信支付订单状态
**接口路径**: `GET /payment/wechat/query/{outTradeNo}`
**功能描述**: 查询微信支付订单的支付状态
**路径参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| outTradeNo | String | 是 | 商户订单号 |
**响应示例**:
```json
{
"code": 0,
"success": true,
"msg": "成功",
"data": {
"tradeState": "SUCCESS",
"tradeStateDesc": "支付成功",
"transactionId": "wx123456789",
"outTradeNo": "ORDER_123_1234567890"
}
}
```
---
### 4. 申请微信支付退款
**接口路径**: `POST /payment/wechat/refund`
**功能描述**: 申请微信支付退款
**请求参数**:
```json
{
"outTradeNo": "ORDER_123_1234567890",
"outRefundNo": "REFUND_123_1234567890",
"total": 10000,
"refund": 5000,
"reason": "用户申请退款"
}
```
**参数说明**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| outTradeNo | String | 是 | 原商户订单号 |
| outRefundNo | String | 是 | 商户退款单号 |
| total | Integer | 是 | 原订单金额(分) |
| refund | Integer | 是 | 退款金额(分) |
| reason | String | 否 | 退款原因 |
**响应示例**:
```json
{
"code": 0,
"success": true,
"msg": "成功",
"data": {
"refundId": "wx_refund_123456789",
"outRefundNo": "REFUND_123_1234567890",
"status": "SUCCESS"
}
}
```
---
### 5. 绑定微信账号信息
**接口路径**: `POST /payment/wechat/bind`
**功能描述**: 绑定用户微信账号信息获取openId和unionId
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| userId | Long | 是 | 用户ID |
| wxCode | String | 是 | 微信授权码 |
**响应示例**:
```json
{
"code": 0,
"success": true,
"msg": "微信账号绑定成功",
"data": null
}
```
**错误处理**:
- 用户不存在
- 微信登录失败
---
## 数据模型
### PaymentParam (支付参数)
```java
public class PaymentParam {
private Long orderId; // 订单ID
private String paymentCategory; // 支付方式
private BigDecimal settleTotalMoney; // 结算总金额
private List<PaymentItemParam> items; // 支付清单
}
```
### PaymentItemParam (支付清单项)
```java
public class PaymentItemParam {
private Long id; // 费用项ID
private String expenseItemName; // 费用项名称
private BigDecimal settleMoney; // 结算金额
}
```
### WechatPayCallbackDto (微信支付回调)
```java
public class WechatPayCallbackDto {
private String id; // 事件ID
private String createTime; // 创建时间
private String eventType; // 事件类型
private Resource resource; // 资源信息
}
```
### WechatPayRefundDto (微信退款参数)
```java
public class WechatPayRefundDto {
private String outTradeNo; // 商户订单号
private String outRefundNo; // 商户退款单号
private Integer total; // 原订单金额(分)
private Integer refund; // 退款金额(分)
private String reason; // 退款原因
}
```
---
## 业务规则
### 支付流程
1. **参数校验**: 验证支付参数完整性
2. **金额校验**: 验证支付金额与数据库一致
3. **支付处理**:
- 公司支付:直接扣减公司账户余额
- 微信支付:创建微信支付订单
4. **状态更新**: 更新订单支付状态
### 公司支付规则
- 需要验证公司账户余额是否充足
- 直接扣减公司账户余额
- 记录资金变动明细
- 支付成功后订单状态变更为已完成
### 微信支付规则
- 创建微信支付订单
- 订单状态变更为待支付
- 等待微信支付回调确认支付结果
- 支付成功后订单状态变更为已完成
### 退款规则
- 只能对已支付的订单申请退款
- 退款成功后订单状态变更为已退款
- 支持部分退款
---
## 错误码说明
| 错误码 | 说明 |
|--------|------|
| 0 | 成功 |
| 11111 | 系统异常 |
| 40001 | 参数错误 |
| 40002 | 业务异常 |
---
## 注意事项
1. **事务处理**: 支付接口使用`@Transactional`注解确保数据一致性
2. **金额精度**: 所有金额计算使用`BigDecimal`类型
3. **微信支付**: 金额需要转换为分乘以100
4. **回调验证**: 微信支付回调需要验证签名
5. **幂等性**: 支付接口需要保证幂等性,避免重复支付
6. **日志记录**: 关键操作都有详细的日志记录
---
## 更新日志
| 版本 | 日期 | 更新内容 |
|------|------|----------|
| 1.0.0 | 2024-01-01 | 初始版本,包含基础支付功能 |
| 1.1.0 | 2024-01-15 | 新增微信账号绑定功能 |