# 生产环境安全配置指南

## 🚨 重要警告

**原始的 `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. **联系技术支持**

记住：**安全第一，谨慎操作！** 🛡️
