152 lines
4.1 KiB
Markdown
152 lines
4.1 KiB
Markdown
|
|
# 支付接入功能配置说明
|
|||
|
|
|
|||
|
|
## 功能概述
|
|||
|
|
|
|||
|
|
本项目已成功集成支付宝和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等工具测试本地回调
|
|||
|
|
|
|||
|
|
## 扩展功能
|
|||
|
|
|
|||
|
|
可以进一步扩展的功能:
|
|||
|
|
- 退款功能
|
|||
|
|
- 支付统计
|
|||
|
|
- 支付报表
|
|||
|
|
- 批量支付
|
|||
|
|
- 分期付款
|
|||
|
|
|