feat(pay): 集成PingPong支付功能并完善配置体系

- 添加MyBatis-Plus和Druid数据源依赖
- 配置多环境数据库连接(dev/test/prod)
- 实现PingPong支付核心功能模块
- 添加支付订单和记录表结构设计
- 集成MD5/SHA256签名算法及验证机制
- 支持支付回调处理和状态更新
- 添加预授权支付类型支持(AUTH/CAPTURE/VOID)
- 实现收银台页面集成和跳转逻辑
- 添加完整的API接口文档和使用说明
- 配置Druid监控和安全管理
- 实现多环境配置文件分离管理
- 添加详细的架构设计和开发文档
This commit is contained in:
2025-12-18 17:40:15 +08:00
parent 7b9045a813
commit 57062efd2d
10 changed files with 1075 additions and 1 deletions

190
mt-pay/ENV_CONFIG.md Normal file
View File

@@ -0,0 +1,190 @@
# 环境配置文件说明
## 配置文件结构
项目采用多环境配置共包含4个配置文件
1. **application.yml** - 主配置文件(通用配置)
2. **application-dev.yml** - 开发环境配置
3. **application-test.yml** - 测试环境配置
4. **application-prod.yml** - 生产环境配置
## 配置文件说明
### application.yml主配置
包含所有环境的通用配置:
- 应用名称
- Druid监控配置
- JPA配置
- PingPong支付默认配置
- 服务器配置
**注意**:主配置文件中不包含数据库连接信息,由各环境配置文件提供。
### application-dev.yml开发环境
**数据库配置**
- 使用阿里云RDS数据库已配置具体连接信息
- 使用沙箱模式的PingPong支付
**使用方式**
```bash
java -jar app.jar --spring.profiles.active=dev
```
### application-test.yml测试环境
**数据库配置**
- 使用环境变量配置数据库连接
- 环境变量:
- `test.db.url` - 数据库连接URL
- `test.db.username` - 数据库用户名
- `test.db.password` - 数据库密码
- 使用测试模式的PingPong支付
**使用方式**
```bash
# 设置环境变量
export test.db.url=jdbc:mysql://host:3306/dbname?...
export test.db.username=username
export test.db.password=password
# 启动应用
java -jar app.jar --spring.profiles.active=test
```
### application-prod.yml生产环境
**数据库配置**
- 使用环境变量配置数据库连接
- 环境变量:
- `prod.db.url` - 数据库连接URL
- `prod.db.username` - 数据库用户名
- `prod.db.password` - 数据库密码
- 使用生产模式的PingPong支付build模式
**使用方式**
```bash
# 设置环境变量
export prod.db.url=jdbc:mysql://host:3306/dbname?...
export prod.db.username=username
export prod.db.password=password
# 启动应用
java -jar app.jar --spring.profiles.active=prod
```
## 环境变量配置示例
### 测试环境环境变量
```bash
# Linux/Mac
export test.db.url="jdbc:mysql://test-host:3306/test_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
export test.db.username="test_user"
export test.db.password="test_password"
```
```powershell
# Windows PowerShell
$env:test.db.url="jdbc:mysql://test-host:3306/test_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
$env:test.db.username="test_user"
$env:test.db.password="test_password"
```
### 生产环境环境变量
```bash
# Linux/Mac
export prod.db.url="jdbc:mysql://prod-host:3306/prod_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
export prod.db.username="prod_user"
export prod.db.password="prod_password"
```
```powershell
# Windows PowerShell
$env:prod.db.url="jdbc:mysql://prod-host:3306/prod_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
$env:prod.db.username="prod_user"
$env:prod.db.password="prod_password"
```
## Docker部署环境变量
在Docker Compose或Kubernetes中配置环境变量
```yaml
# docker-compose.yml
services:
mt-pay:
image: mt-pay:latest
environment:
- SPRING_PROFILES_ACTIVE=prod
- prod.db.url=jdbc:mysql://prod-host:3306/prod_db?...
- prod.db.username=prod_user
- prod.db.password=prod_password
```
```yaml
# kubernetes deployment
apiVersion: v1
kind: ConfigMap
metadata:
name: mt-pay-config
data:
SPRING_PROFILES_ACTIVE: "prod"
prod.db.url: "jdbc:mysql://prod-host:3306/prod_db?..."
prod.db.username: "prod_user"
---
apiVersion: v1
kind: Secret
metadata:
name: mt-pay-secret
type: Opaque
stringData:
prod.db.password: "prod_password"
```
## IDE中切换环境
### IntelliJ IDEA
1. 打开 `Run/Debug Configurations`
2.`Active profiles` 中输入:`dev``test``prod`
3. 或者在 `Environment variables` 中设置环境变量
### Eclipse
1. 右键项目 -> `Run As` -> `Run Configurations`
2.`Arguments` 标签页的 `Program arguments` 中添加:
```
--spring.profiles.active=dev
```
## 配置优先级
Spring Boot配置加载顺序优先级从高到低
1. 命令行参数
2. 环境变量
3. application-{profile}.yml
4. application.yml
## 注意事项
1. **开发环境**:使用具体的数据库连接信息,方便本地开发
2. **测试/生产环境**:使用环境变量,提高安全性
3. **PingPong模式**
- dev: `sandbox`(沙箱)
- test: `test`(测试)
- prod: `build`(生产)
4. **数据库密码**:生产环境务必使用强密码,并通过环境变量或密钥管理服务管理
5. **监控页面**生产环境建议修改Druid监控页面的用户名和密码
## 验证配置
启动应用后,可以通过以下方式验证配置是否正确:
1. 查看启动日志,确认加载的配置文件
2. 访问 `/druid/index.html` 验证数据库连接
3. 检查应用日志中的数据库连接信息(注意:密码不会显示)