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

177 lines
4.4 KiB
Markdown
Raw 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.

# 生产环境安全配置指南
## 🚨 重要警告
**原始的 `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. **联系技术支持**
记住:**安全第一,谨慎操作!** 🛡️