# 生产环境安全配置指南 ## 🚨 重要警告 **原始的 `create_dev_tenant_payment.sql` 脚本不要在生产数据库执行!** 该脚本包含测试数据,可能会影响生产环境。 ## ✅ 安全的生产环境配置方案 ### 方案一:使用后台管理界面(推荐) 1. **登录后台管理系统** 2. **进入支付配置页面** 3. **创建新的支付配置**: - 名称:`微信支付-开发环境` - 类型:微信支付 - 回调地址:`http://frps-10550.s209.websoft.top/api/shop/shop-order/notify` - 其他参数:复制现有生产配置 ### 方案二:使用API接口 ```bash # 1. 获取当前配置 curl -X GET "https://your-domain.com/api/payment/list" \ -H "Authorization: Bearer YOUR_TOKEN" # 2. 创建开发配置 curl -X POST "https://your-domain.com/api/payment" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "name": "微信支付-开发环境", "type": 0, "appId": "YOUR_DEV_APP_ID", "mchId": "YOUR_DEV_MCH_ID", "notifyUrl": "http://frps-10550.s209.websoft.top/api/shop/shop-order/notify", "environment": "dev" }' ``` ### 方案三:执行安全的SQL脚本 如果必须使用SQL,请使用我刚创建的安全版本: ```bash # 1. 先备份数据库 mysqldump -u root -p your_database > backup_$(date +%Y%m%d_%H%M%S).sql # 2. 执行安全脚本 mysql -u root -p your_database < src/main/resources/sql/production_safe_payment_config.sql # 3. 根据脚本输出的模板,手动创建开发配置 ``` ## 🔧 推荐的实施步骤 ### 步骤1:备份现有配置 ```sql -- 备份当前支付配置 CREATE TABLE sys_payment_backup_$(date +%Y%m%d) AS SELECT * FROM sys_payment WHERE status = 1; ``` ### 步骤2:查看当前配置 ```sql -- 查看现有支付配置 SELECT id, name, type, notify_url, tenant_id FROM sys_payment WHERE status = 1 AND deleted = 0; ``` ### 步骤3:创建开发配置 **选择以下方式之一**: #### 方式A:通过后台界面 1. 复制现有生产配置 2. 修改名称为"开发环境" 3. 修改回调地址为本地地址 #### 方式B:通过SQL(谨慎使用) ```sql -- 基于现有配置创建开发版本 INSERT INTO sys_payment ( name, type, code, app_id, mch_id, api_key, notify_url, tenant_id, status, deleted, create_time, update_time ) SELECT CONCAT(name, '-开发环境'), type, CONCAT(code, '_dev'), app_id, mch_id, api_key, 'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify', tenant_id, 0, -- 先设为禁用状态 0, NOW(), NOW() FROM sys_payment WHERE type = 0 AND status = 1 AND deleted = 0 LIMIT 1; ``` ### 步骤4:测试和验证 ```bash # 测试开发环境配置 curl -X GET "http://localhost:9200/api/dev/payment/config/0" # 验证回调地址 curl -X POST "http://frps-10550.s209.websoft.top/api/shop/shop-order/notify" \ -d "test=1" ``` ## 🛡️ 安全检查清单 - [ ] 已备份生产数据库 - [ ] 确认当前数据库环境 - [ ] 使用安全的配置方法 - [ ] 测试开发配置不影响生产 - [ ] 验证回调地址可访问 - [ ] 建立配置恢复机制 ## 🔄 快速切换方案 ### 开发时切换到本地回调 ```sql -- 临时修改(记录原始值) UPDATE sys_payment SET notify_url = 'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify' WHERE id = YOUR_PAYMENT_CONFIG_ID; ``` ### 完成后恢复生产回调 ```sql -- 恢复生产配置 UPDATE sys_payment SET notify_url = 'https://cms-api.websoft.top/api/shop/shop-order/notify' WHERE id = YOUR_PAYMENT_CONFIG_ID; ``` ## 🚀 最佳实践 1. **使用环境感知服务**:让代码自动根据环境切换 2. **创建专用开发配置**:避免修改生产配置 3. **使用配置管理工具**:通过界面而非SQL操作 4. **建立回滚机制**:确保可以快速恢复 5. **团队协作规范**:统一配置管理流程 ## ❌ 避免的操作 - ❌ 直接在生产库执行包含测试数据的脚本 - ❌ 修改生产配置进行开发调试 - ❌ 在生产环境创建测试租户 - ❌ 不备份就修改重要配置 - ❌ 忘记恢复生产环境配置 ## 📞 如果出现问题 1. **立即停止操作** 2. **检查数据库备份** 3. **恢复原始配置**: ```sql -- 从备份恢复 INSERT INTO sys_payment SELECT * FROM sys_payment_backup_YYYYMMDD; ``` 4. **联系技术支持** 记住:**安全第一,谨慎操作!** 🛡️