Files
AIGC/demo/PAYMENT_CONFIG.md
2025-10-21 16:50:33 +08:00

152 lines
4.1 KiB
Markdown
Raw 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.

# 支付接入功能配置说明
## 功能概述
本项目已成功集成支付宝和PayPal两种支付方式提供完整的支付解决方案。
## 支付方式
### 1. 支付宝 (Alipay)
- **适用场景**: 中国大陆用户
- **支持货币**: 人民币 (CNY)
- **支付流程**: 网页支付
- **回调机制**: 异步通知 + 同步返回
### 2. PayPal
- **适用场景**: 国际用户
- **支持货币**: 美元 (USD)、欧元 (EUR) 等
- **支付流程**: PayPal账户支付
- **回调机制**: Webhook通知 + 同步返回
## 配置参数
### 开发环境配置 (application-dev.properties)
```properties
# 支付宝配置 (开发环境)
alipay.app-id=your_app_id
alipay.private-key=your_private_key
alipay.public-key=your_public_key
alipay.gateway-url=https://openapi.alipaydev.com/gateway.do
alipay.charset=UTF-8
alipay.sign-type=RSA2
alipay.notify-url=http://localhost:8080/payment/alipay/notify
alipay.return-url=http://localhost:8080/payment/alipay/return
# PayPal配置 (开发环境)
paypal.client-id=your_paypal_client_id
paypal.client-secret=your_paypal_client_secret
paypal.mode=sandbox
paypal.return-url=http://localhost:8080/payment/paypal/return
paypal.cancel-url=http://localhost:8080/payment/paypal/cancel
```
### 生产环境配置 (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.charset=UTF-8
alipay.sign-type=RSA2
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}
```
## 数据库表结构
### payments 表
```sql
CREATE TABLE payments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id VARCHAR(50) NOT NULL UNIQUE,
amount DECIMAL(10,2) NOT NULL,
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
payment_method VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
description VARCHAR(500),
external_transaction_id VARCHAR(100),
callback_url VARCHAR(1000),
return_url VARCHAR(1000),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
paid_at TIMESTAMP NULL,
user_id BIGINT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
```
## API 端点
### 支付相关端点
- `GET /payment/create` - 显示支付表单
- `POST /payment/create` - 创建支付订单
- `GET /payment/history` - 支付记录列表
- `GET /payment/detail/{id}` - 支付详情
### 支付宝回调端点
- `POST /payment/alipay/notify` - 异步通知
- `GET /payment/alipay/return` - 同步返回
### PayPal回调端点
- `GET /payment/paypal/return` - 支付返回
- `GET /payment/paypal/cancel` - 支付取消
- `POST /payment/paypal/webhook` - Webhook通知
## 支付状态
- `PENDING` - 待支付
- `PROCESSING` - 处理中
- `SUCCESS` - 支付成功
- `FAILED` - 支付失败
- `CANCELLED` - 已取消
- `REFUNDED` - 已退款
## 使用说明
### 1. 配置支付参数
`application-dev.properties` 中配置您的支付参数:
- 支付宝:需要申请支付宝开放平台应用
- PayPal需要申请PayPal开发者账户
### 2. 启动应用
```bash
mvn spring-boot:run
```
### 3. 访问支付功能
- 登录后访问 `/payment/create` 创建支付
- 访问 `/payment/history` 查看支付记录
## 安全注意事项
1. **密钥管理**: 生产环境使用环境变量存储敏感信息
2. **签名验证**: 所有回调都进行签名验证
3. **HTTPS**: 生产环境必须使用HTTPS
4. **权限控制**: 用户只能查看自己的支付记录
## 测试建议
1. **支付宝测试**: 使用支付宝沙箱环境进行测试
2. **PayPal测试**: 使用PayPal沙箱模式进行测试
3. **回调测试**: 使用ngrok等工具测试本地回调
## 扩展功能
可以进一步扩展的功能:
- 退款功能
- 支付统计
- 支付报表
- 批量支付
- 分期付款