# 微信支付配置说明

## 配置项说明

根据[微信支付官方文档](https://pay.weixin.qq.com/doc/v3/merchant/4012791897)，以下是简化的微信支付配置说明（仅包含必填参数）：

### 1. 基础配置

```yaml
wechat:
  pay:
    # 子商户配置
    sub-app-id: wx3c06d9dd4e56c58d      # 子商户APPID
    sub-mch-id: 1900000100              # 子商户号
    
    # API密钥（32位字符串）
    api-key: your-32-character-api-key-here
    
    # 证书序列号
    cert-serial-no: your-cert-serial-number
    
    # 私钥文件路径
    private-key-path: classpath:cert/apiclient_key.pem
    
    # 支付回调地址
    notify-url: https://your-domain.com/api/payment/wechat/callback
```

### 2. 参数说明

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| sub-app-id | String | 是 | 子商户APPID |
| sub-mch-id | String | 是 | 子商户号 |
| api-key | String | 是 | API密钥，32位字符串 |
| cert-serial-no | String | 是 | 证书序列号 |
| private-key-path | String | 是 | 私钥文件路径 |
| notify-url | String | 是 | 支付成功回调地址 |

### 3. 证书配置

1. 将微信支付商户私钥文件 `apiclient_key.pem` 放置在 `src/main/resources/cert/` 目录下
2. 确保证书序列号与私钥文件匹配
3. 私钥文件格式应为 PEM 格式

### 4. 回调地址配置

- 支付回调地址：用于接收支付成功通知
- 退款回调地址：用于接收退款成功通知
- 回调地址必须是 HTTPS 协议
- 回调地址需要能够接收 POST 请求

### 5. 安全注意事项

1. **API密钥安全**：
   - API密钥是32位字符串，请妥善保管
   - 不要将API密钥提交到代码仓库
   - 建议使用环境变量或配置中心管理

2. **证书安全**：
   - 私钥文件不要提交到代码仓库
   - 确保证书文件权限设置正确
   - 定期更新证书

3. **回调地址安全**：
   - 使用HTTPS协议
   - 验证回调签名
   - 处理重复通知

### 6. 环境配置

#### 开发环境 (application-dev.yml)
```yaml
wechat:
  pay:
    # 使用测试商户号和测试APPID
    sub-app-id: wx3c06d9dd4e56c58d
    sub-mch-id: 1900000100
    api-key: your-test-api-key
    cert-serial-no: your-test-cert-serial
    private-key-path: classpath:cert/test_apiclient_key.pem
    notify-url: https://test-domain.com/api/payment/wechat/callback
```

#### 生产环境 (application-prod.yml)
```yaml
wechat:
  pay:
    # 使用正式商户号和正式APPID
    sub-app-id: wx3c06d9dd4e56c58d
    sub-mch-id: 1900000100
    api-key: ${WECHAT_PAY_API_KEY}
    cert-serial-no: ${WECHAT_PAY_CERT_SERIAL}
    private-key-path: classpath:cert/prod_apiclient_key.pem
    notify-url: https://your-domain.com/api/payment/wechat/callback
```

### 7. 常见问题

1. **证书序列号获取**：
   - 登录微信支付商户平台
   - 在"账户中心" -> "API安全" -> "API证书"中查看

2. **API密钥设置**：
   - 在微信支付商户平台设置32位API密钥
   - 确保与代码中配置的密钥一致

3. **回调地址配置**：
   - 确保回调地址可以正常访问
   - 使用HTTPS协议
   - 处理跨域问题

4. **测试环境**：
   - 使用微信支付沙箱环境进行测试
   - 测试商户号和正式商户号不同
   - 测试环境需要特殊配置
