fengketrade/DEPLOY_README.md
2025-10-27 15:42:14 +08:00

2.0 KiB

快速部署说明

方式1: 一键自动部署 (推荐)

bash deploy_fix.sh

这个脚本会自动完成:

  1. 检查本地代码
  2. 上传诊断脚本
  3. 运行服务器诊断
  4. 上传修复文件
  5. 重启PHP-FPM
  6. 清除OPcache
  7. 验证部署

注意: 需要输入服务器密码 atBSGSu0$!T


方式2: 手动步骤

1. 上传诊断脚本

scp server_diagnose.sh root@47.96.77.165:/www/wwwroot/fengketrade/

2. SSH登录服务器

ssh root@47.96.77.165
# 密码: atBSGSu0$!T

3. 运行诊断

cd /www/wwwroot/fengketrade
bash server_diagnose.sh

4. 上传修复文件(在本地新终端执行)

scp addons/shopro/library/ccblife/CcbPaymentService.php \
    root@47.96.77.165:/www/wwwroot/fengketrade/addons/shopro/library/ccblife/

5. 重启PHP(在服务器上)

systemctl restart php-fpm
php -r "opcache_reset();"

验证部署

方法1: 监控日志

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: 检查关键代码行

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中的十六进制格式

预期结果

修复后,建行支付应该能成功拉起收银台,不再报"支付签名生成不成功"错误。