Files
mp-java/docs/unified_payment_with_order_api.md
赵忠林 03bbc465a9 ```
feat(WxLoginController): 添加调试接口获取AccessToken并增强错误处理

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

185 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 统一支付模块 - 订单创建与支付接口
## 🎯 **新接口概述**
新增了 `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"
```
这个方案既保持了架构的统一性,又提供了完整的业务功能!