feat(WxLoginController): 添加调试接口获取AccessToken并增强错误处理

新增调试端点 /debug/getAccessToken用于手动触发获取微信 AccessToken,
便于问题排查。同时增强微信 API 调用的错误处理逻辑,针对常见错误码(如 AppID、AppSecret 配置错误)抛出更明确的异常信息,提升调试效率
和问题定位准确性。
```
This commit is contained in:
2025-09-23 01:11:24 +08:00
parent 55af0759e2
commit 03bbc465a9
4 changed files with 42 additions and 99 deletions

View File

@@ -0,0 +1,184 @@
# 统一支付模块 - 订单创建与支付接口
## 🎯 **新接口概述**
新增了 `POST /api/payment/create-with-order` 接口,实现了:
1. **订单创建**:完整的商品验证、库存扣减、价格计算
2. **支付发起**:统一支付模块的支付创建
3. **数据一致性**:事务保证订单和支付的一致性
## 📋 **接口详情**
### **请求地址**
```
POST /api/payment/create-with-order
```
### **请求参数**
```json
{
"paymentType": "WECHAT_NATIVE",
"amount": 100.00,
"subject": "网站建设服务订单",
"description": "网站建设服务",
"tenantId": 10398,
"orderInfo": {
"type": 0,
"realName": "无",
"address": "无",
"addressId": 0,
"deliveryType": 0,
"channel": 0,
"merchantId": null,
"merchantName": null,
"couponId": null,
"comments": "网站建设服务订单",
"goodsItems": [
{
"goodsId": 10004,
"skuId": null,
"quantity": 1,
"specInfo": null
}
]
}
}
```
### **响应数据**
```json
{
"code": 200,
"message": "订单创建并发起支付成功",
"data": {
"success": true,
"orderNo": "ORDER_1756547282147",
"paymentType": "WECHAT_NATIVE",
"paymentStatus": "PENDING",
"amount": 100.00,
"tenantId": 10398,
"codeUrl": "weixin://wxpay/bizpayurl?pr=xxx",
"currency": "CNY",
"createTime": "2025-01-26T10:30:00"
}
}
```
## 🔄 **处理流程**
### **1. 请求验证**
- 用户登录状态验证
- 支付参数验证(金额、类型等)
- 订单参数验证(商品列表、收货信息等)
### **2. 订单创建**
```
PaymentServiceImpl.createPaymentWithOrder()
convertToOrderCreateRequest() - 转换请求格式
orderBusinessService.createOrder() - 完整订单创建逻辑
- 商品验证(存在性、状态、价格)
- 库存验证和扣减
- 优惠券处理
- 订单保存
- 订单商品保存
- 微信支付订单创建
```
### **3. 支付响应**
- 返回微信支付二维码URL
- 包含订单号和支付状态
- 统一的响应格式
## 🆚 **与现有接口对比**
| 接口 | 功能 | 优势 | 适用场景 |
|------|------|------|----------|
| `/api/payment/create` | 纯支付 | 简单快速 | 已有订单,只需支付 |
| `/api/shop/shop-order` | 纯订单 | 完整业务逻辑 | 创建订单,后续支付 |
| `/api/payment/create-with-order` | 订单+支付 | 一体化流程 | **推荐**:预下单场景 |
## 🎯 **兼容性处理**
### **支持你的数据格式**
你的原始数据:
```json
{
"addressId": 0,
"comments": "网站建设服务订单",
"deliveryType": 0,
"payType": 102,
"goodsItems": [{"goodsId": 10004, "quantity": 1}],
"orderNo": "ORDER_1756547282147",
"realName": "无"
}
```
**转换为新格式**
```json
{
"paymentType": "WECHAT_NATIVE",
"amount": 100.00,
"subject": "网站建设服务订单",
"tenantId": 10398,
"orderInfo": {
"type": 0,
"realName": "无",
"addressId": 0,
"deliveryType": 0,
"comments": "网站建设服务订单",
"goodsItems": [{"goodsId": 10004, "quantity": 1}]
}
}
```
## ✅ **优势总结**
### **1. 架构统一**
- 所有支付逻辑集中在统一支付模块
- 统一的错误处理和日志记录
- 统一的响应格式
### **2. 业务完整**
- 复用现有的完整订单创建逻辑
- 商品验证、库存管理、优惠券处理
- 支付成功后的完整回调处理
### **3. 数据一致性**
- 事务保证订单创建和支付的原子性
- 支付失败时订单状态正确
- 支付成功时自动更新订单状态
### **4. 扩展性好**
- 支持多种支付方式(微信、支付宝、银联等)
- 支持复杂订单场景(多商品、多规格、优惠券等)
- 预留了通知和业务逻辑扩展接口
## 🚀 **测试建议**
### **1. 创建订单并支付**
```bash
curl -X POST "http://127.0.0.1:9200/api/payment/create-with-order" \
-H "Content-Type: application/json" \
-d '{
"paymentType": "WECHAT_NATIVE",
"amount": 100.00,
"subject": "网站建设服务",
"tenantId": 10398,
"orderInfo": {
"type": 0,
"realName": "测试用户",
"comments": "测试订单",
"goodsItems": [{"goodsId": 10004, "quantity": 1}]
}
}'
```
### **2. 查询支付状态**
```bash
curl "http://127.0.0.1:9200/api/payment/query?orderNo=ORDER_xxx&tenantId=10398&paymentType=WECHAT_NATIVE"
```
这个方案既保持了架构的统一性,又提供了完整的业务功能!