Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/install/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.9 release tag。如需切到其他 tag 或 master,
# 取消以下注释并改为目标 ref;确保该 ref 下的 SQL / broker.conf.template / nginx.conf /
# conf/* 与所选业务镜像版本兼容。
# jeepayRef="master"
Expand Down
8 changes: 4 additions & 4 deletions docs/install/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ show_usage() {
nginxImage / managerImage / merchantImage 镜像覆盖
paymentImage 镜像覆盖
rocketmqPlatform RocketMQ 平台(默认 linux/amd64)
jeepayRef 源码 tag,默认 V3.2.7
jeepayRef 源码 tag,默认 V3.2.9
uiRelease 前端静态资源 release(默认 V3.0.0)
EOF
}
Expand Down Expand Up @@ -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.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.7}
jeepayRef=${jeepayRef:-V3.2.9}

# 第2步:拉取项目源代码 || 拉取脚本文件
echo "[2] 拉取项目源代码文件 (ref=$jeepayRef).... "
Expand Down
148 changes: 30 additions & 118 deletions upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -238,121 +238,33 @@
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)

[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。
2 changes: 1 addition & 1 deletion version.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v3.2.7_20260420
v3.2.9_20260527
Loading