# 统一支付模块 - 订单创建与支付接口

## 🎯 **新接口概述**

新增了 `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"
```

这个方案既保持了架构的统一性，又提供了完整的业务功能！
