Files
mp-java/docs/PAYMENT_ENVIRONMENT_ISOLATION_GUIDE.md
赵忠林 fa83ef5967 feat(dev): 添加开发环境支付配置和优惠券字段修复功能
- 新增开发环境控制器和环境感知支付服务
- 添加数据库字段缺失修复指南
- 改进优惠券适用商品查询逻辑
-优化支付配置获取方式
2025-08-15 02:47:02 +08:00

213 lines
5.9 KiB
Markdown
Raw Permalink 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.

# 支付环境隔离解决方案
## 🎯 问题描述
**现状问题**
- 开发调试时需要修改支付回调地址为本地地址
- 修改后影响线上生产环境的正常使用
- 缺乏开发和生产环境的有效隔离机制
## 💡 解决方案概览
我为您提供了5种解决方案可以单独使用或组合使用
### 方案一:创建开发专用租户(推荐)✨
- 创建独立的开发租户ID: 9999
- 配置专用的支付参数和回调地址
- 完全隔离开发和生产环境
### 方案二:环境感知的支付配置服务
- 根据 `spring.profiles.active` 自动切换回调地址
- 开发环境自动使用本地回调,生产环境使用线上回调
- 无需手动修改配置
### 方案三:配置文件环境隔离
- 在配置文件中定义不同环境的回调地址
- 支持灵活的环境配置管理
### 方案四:开发环境管理工具
- 提供专用的开发环境管理接口
- 支持一键切换和恢复回调地址
- 仅在开发环境启用
### 方案五:多租户配置隔离
- 利用现有的多租户架构
- 为不同租户配置不同的支付参数
## 🚀 快速实施指南
### 步骤1执行数据库脚本推荐
```bash
# 创建开发专用租户和配置
mysql -u root -p your_database < src/main/resources/sql/create_dev_tenant_payment.sql
```
这将创建:
- 开发专用租户ID: 9999
- 开发环境支付配置(使用本地回调地址)
- 开发测试用户
### 步骤2配置环境感知服务
已创建的服务会自动:
- 检测当前运行环境
- 根据环境自动调整回调地址
- 开发环境:`http://frps-10550.s209.websoft.top/api/shop/shop-order/notify`
- 生产环境:`https://cms-api.websoft.top/api/shop/shop-order/notify`
### 步骤3使用开发环境管理工具
开发环境下可以访问以下接口:
```bash
# 查看环境信息
GET /api/dev/environment/info
# 查看支付配置
GET /api/dev/payment/config/0
# 切换回调地址
POST /api/dev/payment/switch-notify-url
{
"notifyUrl": "http://your-local-address/api/shop/shop-order/notify",
"payType": "0"
}
# 重置为生产环境
POST /api/dev/payment/reset-to-prod?payType=0
# 获取使用指南
GET /api/dev/guide
```
## 📋 使用方式对比
| 方案 | 优点 | 缺点 | 适用场景 |
|------|------|------|----------|
| 开发专用租户 | 完全隔离,不影响生产 | 需要创建额外数据 | 团队开发,长期使用 |
| 环境感知服务 | 自动切换,无需手动操作 | 需要代码改动 | 自动化程度高的项目 |
| 配置文件隔离 | 配置灵活,易于管理 | 需要重启应用 | 配置驱动的项目 |
| 开发管理工具 | 操作简单,功能丰富 | 仅开发环境可用 | 频繁调试的场景 |
| 多租户隔离 | 利用现有架构 | 依赖租户体系 | 已有多租户的系统 |
## 🔧 配置示例
### 开发环境配置 (application-dev.yml)
```yaml
payment:
dev:
notify-url: "http://frps-10550.s209.websoft.top/api/shop/shop-order/notify"
environment-aware: true
```
### 生产环境配置 (application-prod.yml)
```yaml
payment:
prod:
notify-url: "https://cms-api.websoft.top/api/shop/shop-order/notify"
environment-aware: false
```
## 🧪 测试验证
### 1. 验证环境感知功能
```bash
# 检查当前环境
curl -X GET "http://localhost:9200/api/dev/environment/info"
# 检查支付配置
curl -X GET "http://localhost:9200/api/dev/payment/config/0"
```
### 2. 验证回调地址切换
```bash
# 切换到本地回调
curl -X POST "http://localhost:9200/api/dev/payment/switch-notify-url" \
-H "Content-Type: application/json" \
-d '{"notifyUrl":"http://localhost:8080/api/shop/shop-order/notify","payType":"0"}'
# 重置为生产回调
curl -X POST "http://localhost:9200/api/dev/payment/reset-to-prod?payType=0"
```
## 🎨 最佳实践建议
### 推荐组合方案
**方案A完全隔离推荐**
1. 创建开发专用租户
2. 配置开发环境支付参数
3. 使用开发租户进行所有测试
**方案B自动化切换**
1. 部署环境感知服务
2. 配置环境相关参数
3. 代码自动根据环境切换
**方案C手动管理**
1. 使用开发环境管理工具
2. 调试时切换回调地址
3. 完成后恢复生产配置
### 开发流程建议
1. **开发阶段**:使用开发租户或本地回调地址
2. **测试阶段**:使用测试环境配置
3. **上线前**:确认生产环境配置正确
4. **上线后**:验证生产环境支付功能
## 🚨 注意事项
### 安全考虑
- 开发环境管理接口仅在开发环境启用
- 生产环境不会加载开发相关的控制器
- 敏感配置信息需要妥善保护
### 数据一致性
- 开发租户数据与生产数据隔离
- 定期清理开发环境测试数据
- 避免开发数据污染生产环境
### 团队协作
- 统一开发环境配置标准
- 文档化配置变更流程
- 建立配置变更审核机制
## 🔄 回滚方案
如果需要回滚到原有方式:
```sql
-- 删除开发租户(可选)
DELETE FROM sys_tenant WHERE tenant_id = 9999;
DELETE FROM sys_payment WHERE tenant_id = 9999;
DELETE FROM sys_user WHERE tenant_id = 9999;
-- 恢复原有支付配置
UPDATE sys_payment
SET notify_url = 'https://cms-api.websoft.top/api/shop/shop-order/notify'
WHERE tenant_id = 1;
```
## ✅ 实施检查清单
- [ ] 执行了数据库脚本创建开发租户
- [ ] 配置了环境感知服务
- [ ] 测试了开发环境管理接口
- [ ] 验证了自动环境切换功能
- [ ] 确认了生产环境配置正确
- [ ] 建立了开发流程规范
- [ ] 培训了团队成员使用方法
## 📞 技术支持
如果在实施过程中遇到问题:
1. 检查日志中的环境检测信息
2. 验证配置文件中的环境参数
3. 确认数据库中的租户和支付配置
4. 测试开发环境管理接口功能
实施完成后,您就可以在不影响生产环境的情况下进行支付功能的开发和调试了!