From e3f7afd739d1ea9d5559960a8cd90f44ac12b8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E6=A3=AE=E6=9E=97?= Date: Wed, 22 Apr 2026 21:28:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?docs(upgrade):=20=E7=B2=BE=E7=AE=80=20v3.2.?= =?UTF-8?q?1~v3.2.7=20=E8=A1=A5=E4=B8=81=E7=89=88=E6=9C=AC=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=B8=BA=20v3.2.8=20=E6=B1=87=E6=80=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- upgrade.md | 126 ++++------------------------------------------------- 1 file changed, 8 insertions(+), 118 deletions(-) diff --git a/upgrade.md b/upgrade.md index 15206280..b9a1c7b7 100644 --- a/upgrade.md +++ b/upgrade.md @@ -238,121 +238,11 @@ 3. 优化: 卸载脚本支持幂等执行,缺失容器或网络时自动跳过 4. 新增: 增加 Docker Hub 镜像构建与推送脚本 -[v3.2.1_20260419] -> 安装工具 & 文档补丁版本:业务代码零改动,与 3.2.0 业务镜像完全兼容, -> 无需重打 jeepay-manager / jeepay-merchant / jeepay-payment 镜像。 -1. 新增: install.sh 安装结束前执行 [8] 部署自检(等待三个 jeepay 应用 - healthcheck + 探测 19216/19217/19218 HTTP) -2. 新增: install.sh 支持通过 jeepayRef 环境变量锁定源码 tag,默认 - 锁到 V3.2.1,避免业务镜像固定而源码继续漂移的"老镜像 + 新配置" - 混装问题 -3. 修复: 自定义 rootDir 下,安装后 sources 目录 config.sh 自动回写 - 为真实生效值,使按文档路径执行的 uninstall.sh 不再误删默认路径 -4. 优化: install.sh 对 mysql / redis / nginx 去除多余的 - --platform=linux/amd64 硬编码(SWR 已同步多架构 manifest),仅对 - RocketMQ 保留 --platform 并改为 $rocketmqPlatform 可覆盖 -5. 优化: 补齐 config.sh 模板中的镜像 / 平台 / jeepayRef 覆盖项注释 -6. 优化: README 精简至 ~300 行,按主题拆分至 docs/deploy/*,并在 - 顶部新增"官方托管服务(计全付)"入口(含 100% 全额分账能力) -7. 优化: 部署文档优先引导使用华为云 SWR 公开镜像,国内零配置直达 -8. 修复: 移除 codegen 模块未被引用的 spring-context 依赖,消除 - CVE-2024-38820 / CVE-2025-22233 Dependabot 告警 -9. 修复: 商户系统默认密码说明(商户平台无内置账号,新建商户用户 - 的默认密码是 jeepay666) - -[v3.2.2_20260419] -> 反向代理 / HTTPS 场景加固补丁版本:业务代码零改动,与 3.2.0 / V3.2.1 -> 业务镜像完全兼容,无需重打 jeepay-manager / jeepay-merchant / -> jeepay-payment 镜像,重启容器即可生效(或让 install.sh 重装)。 -1. 修复: docs/install/include/nginx.conf 的三段反代缺 X-Forwarded-Proto - 等头,外层 HTTPS 反代时会让 Spring Boot 把收银台 return_url / 支付 - 回调 URL 拼成 http://,触发浏览器 mixed-content 拦截或第三方回跳 - 失败。统一补齐 X-Forwarded-Proto / X-Forwarded-Port。 -2. 优化: conf/payment / conf/manager / conf/merchant 的 application.yml - 默认开启 server.forward-headers-strategy: framework,让 Spring Boot - 正确识别 X-Forwarded-* 头部,保证重定向 / Cookie domain / 支付回跳 - 行为在外层 HTTPS 反代下自动正确。 -3. 新增: docs/deploy/shell.md 新增"配置域名 + HTTPS"章节,提供三种 - 部署拓扑(三子域 / 一域名 + 路径前缀 / 只暴露收银台)与外层 nginx - 示例片段,避免"加域名就出问题"。 -4. 优化: install.sh 默认 jeepayRef 由 V3.2.1 跟进到 V3.2.2。 - -[v3.2.3_20260419] -> 跨发行版安装加固补丁版本:业务代码零改动,与 3.2.0 / V3.2.x 业务镜像 -> 完全兼容,无需重打 jeepay-manager / jeepay-merchant / jeepay-payment -> 镜像。主要修复用户在 Ubuntu / Debian 上直接执行 install.sh 时出现 -> "docker: command not found" 的问题(原脚本仅 yum 路径有自动安装兜底)。 -1. 修复: install.sh 依赖自动安装改为跨发行版适配,自动检测 - apt / dnf / yum / apk 包管理器并选择对应安装路径;包含 wget / curl - / git / docker 四个命令的自动安装与落地校验。 -2. 新增: install.sh 安装失败时给出明确错误提示(包管理器类型、对应 - 手动安装命令),避免后续步骤连串 command not found。 -3. 新增: install.sh 在装完 docker 后执行 docker info 校验 daemon - 可用,daemon 未启动会提示 systemctl / service 启动命令。 -4. 优化: install.sh 默认 jeepayRef 由 V3.2.2 跟进到 V3.2.3。 - -[v3.2.4_20260419] -> 宿主端口冲突预检补丁版本:业务代码零改动,与 3.2.0 / V3.2.x 业务镜像 -> 完全兼容。修复用户在已有 MySQL / Redis 的宿主机上执行 install.sh, -> 直接走到 [3]/[4] 才因 "address already in use" 失败、留下半成品容器 -> 的体验问题。 -1. 新增: install.sh 启动阶段预检 9 个宿主端口 - (3306 / 6379 / 9876 / 10909-10912 / 19216-19218),任一被占直接 - 打印占用进程并退出,避免后续容器启动失败后手工排查。 -2. 新增: mysqlHostPort / redisHostPort 两个环境变量 / config.sh 覆盖项, - 支持在已有 MySQL / Redis 的宿主机上改用其他 host port。jeepay 服务 - 在 jeepay-net 内部仍通过 mysql:3306 / redis:6379 通信,host port - 变化不影响业务。 -3. 文档: docs/deploy/shell.md 新增"宿主端口冲突"小节,说明哪些端口 - 可改、哪些必须释放,以及 RocketMQ / Nginx 为何暂不支持覆盖。 -4. 优化: install.sh 默认 jeepayRef 由 V3.2.3 跟进到 V3.2.4。 - -[v3.2.5_20260419] -> 端口冲突自动处理补丁版本:业务代码零改动,与 3.2.0 / V3.2.x 业务镜像 -> 完全兼容。进一步把 V3.2.4 的"冲突则退出"升级为"自动换端口继续部署"。 -1. 优化: install.sh 检测到 MySQL / Redis 默认宿主端口(3306 / 6379) - 被占时,自动挑选空闲端口(3306 → 13306 → 13307 → ...)并打印 INFO - 提示,无需用户二次干预。 -2. 保留: 用户显式通过环境变量或 config.sh 指定 mysqlHostPort / - redisHostPort 的场景,若被占则直接报错退出,不会静默换端口,尊重 - 用户意图。 -3. 保留: RocketMQ / Nginx 端口(9876 / 10909-10912 / 19216-19218) - 与容器内通信耦合,仍然执行"冲突即退出"策略。 -4. 文档: docs/deploy/shell.md 同步更新"宿主端口冲突"小节。 -5. 优化: install.sh 默认 jeepayRef 由 V3.2.4 跟进到 V3.2.5。 - -[v3.2.6_20260419] -> 卸载脚本"一条命令"升级:业务代码零改动,与 3.2.0 / V3.2.x 业务镜像 -> 完全兼容。终结 "/your/install/path/..." 占位路径误导体验。 -1. 优化: uninstall.sh 支持从跑着的 mysql8 容器数据卷自动识别 rootDir - (/var/lib/mysql 的宿主挂载路径去掉 /mysql/data 即为 rootDir), - 用户可以直接在任意目录 wget + sh 一条命令卸载,不再需要先 cd 到 - 安装目录里。 -2. 新增: rootDir 获取优先级 环境变量 > 当前目录 config.sh > 容器自动 - 识别;三个都拿不到时打印明确错误,不会误删。 -3. 优化: uninstall 确认阶段明确列出即将删除的容器、网络与根目录, - 用户按回车前能清楚知道改动范围。 -4. 文档: docs/deploy/shell.md 卸载小节改为一条命令推荐 + 原路径方式 - 作为备选,并说明何时需要手动 rootDir=xxx。 -5. 优化: install.sh 默认 jeepayRef 由 V3.2.5 跟进到 V3.2.6。 - -[v3.2.7_20260420] -> 关键修复版本:V3.2.0 ~ V3.2.6 的 Shell 部署实际都连不上 MySQL / Redis -> (登录页验证码不出、任何 DB 操作报异常),[8] 部署自检没覆盖这条通路 -> 所以之前都"假通过"。强烈建议受影响部署 uninstall + 重新 install。 -> 业务代码零改动,与 3.2.0 业务镜像完全兼容。 -1. 修复: docker run mysql8 / redis6 分别加 --network-alias mysql / - --network-alias redis,使得 jeepay 应用在 jeepay-net 内用 Compose - 规格的 hostname "mysql" / "redis" 也能解析到对应容器。此前 manager - / merchant / payment 的 application.yml 里写的是 mysql / redis,而 - install.sh 启动的容器叫 mysql8 / redis6,DNS 解析失败导致 - UnknownHostException。 -2. 修复: install.sh 在 cp conf/* 到 service/configs/ 之后,自动把三份 - application.yml 里 datasource 段的占位密码 rootroot(Compose 默认) - 替换为 config.sh 里的 mysql_pwd,消除"容器启动用新密码、应用连库 - 用旧密码"的 Access denied 错配。 -3. 新增: [8] 部署自检新增 DB + Redis 连通性探针——向运营平台 - /api/anon/auth/vercode 发 GET 请求,后端会向 Redis 写入验证码 - token。200 表示 MySQL / Redis 通路正常;非 200 打印 WARN 并给出 - hostname alias / 密码两种典型原因排查指引。 -4. 优化: install.sh 默认 jeepayRef 由 V3.2.6 跟进到 V3.2.7。 +[v3.2.8_20260422] +1. 优化: 一键安装 / 卸载脚本增强——跨发行版自动安装依赖、端口预检与自动避让、安装末尾部署自检,卸载支持任意目录一条命令 +2. 新增: 宝塔 Docker 应用新增"镜像仓库地址"字段,一键切换华为云 SWR / Docker Hub 官方镜像 +3. 优化: docs/install/include/nginx.conf 补齐 X-Forwarded-Proto / Port 头,并开启 forward-headers-strategy,修 HTTPS 反代下 mixed-content 和支付回跳 +4. 优化: README 精简至约 300 行,部署文档按主题拆分至 docs/deploy/*,优先引导华为云 SWR 镜像 +5. 修复: mysql8 / redis6 容器添加 --network-alias,解决应用按 hostname 解析失败(UnknownHostException) +6. 修复: install.sh 自动把 application.yml datasource 密码 rootroot 替换为 mysql_pwd,消除 Access denied +7. 修复: 移除 codegen 未用的 spring-context 依赖(消除 CVE-2024-38820 / CVE-2025-22233) From 5469f3da4655099acd48531599ec1732dc2823f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E6=A3=AE=E6=9E=97?= Date: Wed, 22 Apr 2026 21:30:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore(release):=20=E6=92=9E=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=88=B0=20V3.2.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/install/config.sh | 2 +- docs/install/install.sh | 8 ++++---- version.md | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/install/config.sh b/docs/install/config.sh index 8a31d8c0..ba6c89f8 100644 --- a/docs/install/config.sh +++ b/docs/install/config.sh @@ -31,7 +31,7 @@ mysql_pwd="jeepaydb123456" # 若使用自行构建的 arm64 RocketMQ 镜像,请同时覆盖 rocketmqImage 并将下行改为 linux/arm64: # rocketmqPlatform="linux/amd64" -# 源码 ref:install.sh 默认锁到 V3.2.7 release tag。如需切到其他 tag 或 master, +# 源码 ref:install.sh 默认锁到 V3.2.8 release tag。如需切到其他 tag 或 master, # 取消以下注释并改为目标 ref;确保该 ref 下的 SQL / broker.conf.template / nginx.conf / # conf/* 与所选业务镜像版本兼容。 # jeepayRef="master" diff --git a/docs/install/install.sh b/docs/install/install.sh index 542d68e0..921fa44e 100644 --- a/docs/install/install.sh +++ b/docs/install/install.sh @@ -23,7 +23,7 @@ show_usage() { nginxImage / managerImage / merchantImage 镜像覆盖 paymentImage 镜像覆盖 rocketmqPlatform RocketMQ 平台(默认 linux/amd64) - jeepayRef 源码 tag,默认 V3.2.7 + jeepayRef 源码 tag,默认 V3.2.8 uiRelease 前端静态资源 release(默认 V3.0.0) EOF } @@ -402,10 +402,10 @@ paymentImage=${paymentImage:-swr.cn-south-1.myhuaweicloud.com/jeepay/jeepay-paym # 其他镜像(mysql/redis/nginx)已具备多架构 manifest,不再强制 platform。 rocketmqPlatform=${rocketmqPlatform:-linux/amd64} -# 源码 ref:默认锁到 V3.2.4 release tag,保证 git clone 下来的 SQL / broker.conf.template / -# nginx.conf / conf/* 与业务镜像(3.2.0 / V3.2.4 兼容)契合,不受 master 后续演进影响。 +# 源码 ref:默认锁到 V3.2.8 release tag,保证 git clone 下来的 SQL / broker.conf.template / +# nginx.conf / conf/* 与业务镜像(3.2.0 业务镜像与 V3.2.x 配置兼容)契合,不受 master 后续演进影响。 # 如需用最新 master 或其他 tag,安装前导出 jeepayRef=xxx 覆盖即可(透传给 git clone --branch)。 -jeepayRef=${jeepayRef:-V3.2.7} +jeepayRef=${jeepayRef:-V3.2.8} # 第2步:拉取项目源代码 || 拉取脚本文件 echo "[2] 拉取项目源代码文件 (ref=$jeepayRef).... " diff --git a/version.md b/version.md index 46ce23d3..eac51776 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -v3.2.7_20260420 +v3.2.8_20260422 From 376f1ae30120deb474a9a277eaff1190e7e3ef19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E6=A3=AE=E6=9E=97?= Date: Wed, 27 May 2026 16:29:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?chore(release):=20=E6=92=9E=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=88=B0=20V3.2.9=20+=20=E8=A1=A5=20V3.2.9?= =?UTF-8?q?=20changelog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - version.md:v3.2.8_20260422 → v3.2.9_20260527 - docs/install/install.sh / config.sh:jeepayRef 默认值跟进到 V3.2.9 - upgrade.md:新增 V3.2.9 段,说明本版本主要内容: * 支付宝授权回调 state 解析鲁棒性 * 支付宝异步通知补业务字段交叉校验 * install.sh git clone 失败硬退出 * conf/* 里 spring.activemq 段统一注释掉 * README 加 AI 接入助手段 --- docs/install/config.sh | 2 +- docs/install/install.sh | 6 +++--- upgrade.md | 22 ++++++++++++++++++++++ version.md | 2 +- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/docs/install/config.sh b/docs/install/config.sh index ba6c89f8..02dfe2a4 100644 --- a/docs/install/config.sh +++ b/docs/install/config.sh @@ -31,7 +31,7 @@ mysql_pwd="jeepaydb123456" # 若使用自行构建的 arm64 RocketMQ 镜像,请同时覆盖 rocketmqImage 并将下行改为 linux/arm64: # rocketmqPlatform="linux/amd64" -# 源码 ref:install.sh 默认锁到 V3.2.8 release tag。如需切到其他 tag 或 master, +# 源码 ref:install.sh 默认锁到 V3.2.9 release tag。如需切到其他 tag 或 master, # 取消以下注释并改为目标 ref;确保该 ref 下的 SQL / broker.conf.template / nginx.conf / # conf/* 与所选业务镜像版本兼容。 # jeepayRef="master" diff --git a/docs/install/install.sh b/docs/install/install.sh index b6a4e3dc..9dddbfb4 100644 --- a/docs/install/install.sh +++ b/docs/install/install.sh @@ -23,7 +23,7 @@ show_usage() { nginxImage / managerImage / merchantImage 镜像覆盖 paymentImage 镜像覆盖 rocketmqPlatform RocketMQ 平台(默认 linux/amd64) - jeepayRef 源码 tag,默认 V3.2.8 + jeepayRef 源码 tag,默认 V3.2.9 uiRelease 前端静态资源 release(默认 V3.0.0) EOF } @@ -402,10 +402,10 @@ paymentImage=${paymentImage:-swr.cn-south-1.myhuaweicloud.com/jeepay/jeepay-paym # 其他镜像(mysql/redis/nginx)已具备多架构 manifest,不再强制 platform。 rocketmqPlatform=${rocketmqPlatform:-linux/amd64} -# 源码 ref:默认锁到 V3.2.8 release tag,保证 git clone 下来的 SQL / broker.conf.template / +# 源码 ref:默认锁到 V3.2.9 release tag,保证 git clone 下来的 SQL / broker.conf.template / # nginx.conf / conf/* 与业务镜像(3.2.0 业务镜像与 V3.2.x 配置兼容)契合,不受 master 后续演进影响。 # 如需用最新 master 或其他 tag,安装前导出 jeepayRef=xxx 覆盖即可(透传给 git clone --branch)。 -jeepayRef=${jeepayRef:-V3.2.8} +jeepayRef=${jeepayRef:-V3.2.9} # 第2步:拉取项目源代码 || 拉取脚本文件 echo "[2] 拉取项目源代码文件 (ref=$jeepayRef).... " diff --git a/upgrade.md b/upgrade.md index b9a1c7b7..92163b8f 100644 --- a/upgrade.md +++ b/upgrade.md @@ -246,3 +246,25 @@ 5. 修复: mysql8 / redis6 容器添加 --network-alias,解决应用按 hostname 解析失败(UnknownHostException) 6. 修复: install.sh 自动把 application.yml datasource 密码 rootroot 替换为 mysql_pwd,消除 Access denied 7. 修复: 移除 codegen 未用的 spring-context 依赖(消除 CVE-2024-38820 / CVE-2025-22233) + +[v3.2.9_20260527] +> 安全 / 健壮性补丁版本:业务代码改动集中在支付宝渠道的安全加固和 install 脚本 +> 健壮性,与 V3.2.8 业务镜像基本兼容;其中支付宝异步通知验签升级建议受影响 +> 部署重新构建并发布 jeepay-payment 镜像。 +1. 修复: 支付宝授权回调 state 参数解析鲁棒性——AlipayBizController.redirectAppToAppAuth / + appToAppAuthCallback 不再直接 split("_")[0]/[1],抽出 AlipayKit.parseIsvAndMchAppIdState + 工具方法做长度 / 空值校验,配 mchAppService.getById 空校验,异常或被构造的 state + 不再触发 ArrayIndexOutOfBoundsException / NPE。 +2. 修复: 支付宝异步通知补业务字段交叉校验——AlipayChannelNoticeService.doNotice + 在验签通过后再校验 out_trade_no / app_id / total_amount 三字段与本地订单一致, + 消除多商户 / 沙箱与生产串扰 / 跨订单签名穿越场景下"看似合法但内容不匹配"通知 + 误处理风险。任一字段不一致 → 记 ERROR 日志 + 返回 SUCCESS 阻断重试 + 不更新订单状态。 +3. 修复: install.sh 在 git clone 源码后加 require_ok 断言,tag 不存在或拉取失败 + 时立即硬退出,不再出现"实际是 git clone 失败但报到下游 MySQL 配置步骤"的误报。 +4. 优化: conf/{payment,manager,merchant,devCommons/config}/application.yml 里 + spring.activemq 段统一注释掉。默认 isys.mq.vender 已切到 rocketMQ 后,activemq + starter 仍会去连 activemq5:61616 重试,本次清理后启动日志不再有此类后台连接噪音。 +5. 文档: README 增加"AI 接入助手"段,指向 jeepay-skills 仓库 + (https://github.com/jeequan/jeepay-skills),供使用 Claude / Cursor / ChatGPT + 等 AI 工具接入 Jeepay 的开发者。 +6. 优化: install.sh 默认 jeepayRef 由 V3.2.8 跟进到 V3.2.9。 diff --git a/version.md b/version.md index eac51776..940f619c 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -v3.2.8_20260422 +v3.2.9_20260527