# 快速部署说明 ## 方式1: 一键自动部署 (推荐) ```bash bash deploy_fix.sh ``` 这个脚本会自动完成: 1. ✅ 检查本地代码 2. ✅ 上传诊断脚本 3. ✅ 运行服务器诊断 4. ✅ 上传修复文件 5. ✅ 重启PHP-FPM 6. ✅ 清除OPcache 7. ✅ 验证部署 **注意:** 需要输入服务器密码 `atBSGSu0$!T` --- ## 方式2: 手动步骤 ### 1. 上传诊断脚本 ```bash scp server_diagnose.sh root@47.96.77.165:/www/wwwroot/fengketrade/ ``` ### 2. SSH登录服务器 ```bash ssh root@47.96.77.165 # 密码: atBSGSu0$!T ``` ### 3. 运行诊断 ```bash cd /www/wwwroot/fengketrade bash server_diagnose.sh ``` ### 4. 上传修复文件(在本地新终端执行) ```bash scp addons/shopro/library/ccblife/CcbPaymentService.php \ root@47.96.77.165:/www/wwwroot/fengketrade/addons/shopro/library/ccblife/ ``` ### 5. 重启PHP(在服务器上) ```bash systemctl restart php-fpm php -r "opcache_reset();" ``` --- ## 验证部署 ### 方法1: 监控日志 ```bash ssh root@47.96.77.165 \ 'tail -f /www/wwwroot/fengketrade/runtime/log/$(date +%Y%m)/$(date +%d).log' \ | grep '最终支付串' ``` 然后触发一次支付,观察输出: - ✅ **正确**: `PROINFO=%u6F2B` (% 后直接是 u) - ❌ **错误**: `PROINFO=%25u6F2B` (% 被编码成 %25) ### 方法2: 检查关键代码行 ```bash ssh root@47.96.77.165 \ 'sed -n "279p" /www/wwwroot/fengketrade/addons/shopro/library/ccblife/CcbPaymentService.php' ``` 应该输出: `$finalParts[] = $key . '=' . $value;` 不应包含: `urlencode` --- ## 详细文档 查看 `SERVER_FIX_GUIDE.md` 获取完整的操作指南和故障排查。 --- ## 已修复的问题 1. ✅ **URL编码问题**: 移除了最终支付串的URL编码 2. ✅ **ENCPUB格式**: 转换为URL-safe BASE64 (+ → -, / → _) 3. ✅ **十六进制商户公钥**: 支持.env中的十六进制格式 --- ## 预期结果 修复后,建行支付应该能成功拉起收银台,不再报"支付签名生成不成功"错误。