# 支付配置说明

## 支付宝配置

### 1. 申请支付宝开放平台应用
1. 访问 [支付宝开放平台](https://open.alipay.com/)
2. 注册开发者账号
3. 创建应用，选择"网页&移动应用"
4. 获取应用信息：
   - APPID
   - 应用私钥
   - 支付宝公钥

### 2. 配置沙箱环境
1. 在开放平台控制台启用沙箱环境
2. 获取沙箱应用信息
3. 下载沙箱版支付宝APP进行测试

### 3. 更新配置文件
在 `application-dev.properties` 中更新以下配置：

```properties
# 支付宝沙箱配置
alipay.app-id=你的沙箱APPID
alipay.private-key=你的应用私钥
alipay.public-key=支付宝公钥
alipay.gateway-url=https://openapi.alipaydev.com/gateway.do
alipay.notify-url=http://你的域名:8080/api/payments/alipay/notify
alipay.return-url=http://你的域名:8080/api/payments/alipay/return
```

## PayPal配置

### 1. 申请PayPal开发者账号
1. 访问 [PayPal开发者中心](https://developer.paypal.com/)
2. 注册开发者账号
3. 创建应用，选择"Sandbox"环境
4. 获取应用信息：
   - Client ID
   - Client Secret

### 2. 更新配置文件
在 `application-dev.properties` 中更新以下配置：

```properties
# PayPal沙箱配置
paypal.client-id=你的沙箱Client ID
paypal.client-secret=你的沙箱Client Secret
paypal.mode=sandbox
paypal.return-url=http://你的域名:8080/api/payments/paypal/return
paypal.cancel-url=http://你的域名:8080/api/payments/paypal/cancel
```

## 生产环境配置

### 1. 环境变量配置
生产环境建议使用环境变量：

```bash
# 支付宝生产环境
export ALIPAY_APP_ID=你的生产APPID
export ALIPAY_PRIVATE_KEY=你的生产私钥
export ALIPAY_PUBLIC_KEY=支付宝生产公钥
export ALIPAY_NOTIFY_URL=https://你的域名/api/payments/alipay/notify
export ALIPAY_RETURN_URL=https://你的域名/api/payments/alipay/return

# PayPal生产环境
export PAYPAL_CLIENT_ID=你的生产Client ID
export PAYPAL_CLIENT_SECRET=你的生产Client Secret
export PAYPAL_RETURN_URL=https://你的域名/api/payments/paypal/return
export PAYPAL_CANCEL_URL=https://你的域名/api/payments/paypal/cancel
```

### 2. 更新生产环境配置
在 `application-prod.properties` 中：

```properties
# 支付宝生产环境
alipay.app-id=${ALIPAY_APP_ID}
alipay.private-key=${ALIPAY_PRIVATE_KEY}
alipay.public-key=${ALIPAY_PUBLIC_KEY}
alipay.gateway-url=https://openapi.alipay.com/gateway.do
alipay.notify-url=${ALIPAY_NOTIFY_URL}
alipay.return-url=${ALIPAY_RETURN_URL}

# PayPal生产环境
paypal.client-id=${PAYPAL_CLIENT_ID}
paypal.client-secret=${PAYPAL_CLIENT_SECRET}
paypal.mode=live
paypal.return-url=${PAYPAL_RETURN_URL}
paypal.cancel-url=${PAYPAL_CANCEL_URL}
```

## 测试支付功能

### 1. 启动应用
```bash
# 启动后端服务
mvn spring-boot:run

# 启动前端服务
cd frontend
npm run dev
```

### 2. 测试流程
1. 访问 http://localhost:3000
2. 登录测试账号
3. 创建订单
4. 选择支付方式
5. 完成支付测试

### 3. 测试账号
- **支付宝沙箱**: 使用沙箱版支付宝APP扫码支付
- **PayPal沙箱**: 使用沙箱测试账号进行支付

## 注意事项

1. **HTTPS要求**: 生产环境必须使用HTTPS
2. **域名配置**: 确保回调URL使用正确的域名
3. **签名验证**: 确保私钥和公钥配置正确
4. **日志监控**: 监控支付回调日志
5. **异常处理**: 实现完善的异常处理机制

## 常见问题

### Q: 支付宝回调失败
A: 检查notify-url是否正确，确保服务器可以接收POST请求

### Q: PayPal支付页面无法打开
A: 检查Client ID和Secret是否正确，确保使用沙箱模式

### Q: 签名验证失败
A: 检查私钥格式，确保没有多余的空格和换行符

### Q: 跨域问题
A: 确保CORS配置正确，允许支付平台的域名


