拆完 Jeepay 的笔记:一套开源支付系统是怎么分三块服务的

Jeepay(计全支付)是一套开源支付系统,把微信支付、支付宝、云闪付的官方接口封装成统一下单、查单、回调、退款、分账、转账的 API,支持普通商户和服务商两种账户模式,GitHub 上 6500+ star。下面是读 README、docs/deploy 和模块目录后的备忘。

是什么

它的范围是:支付网关(jeepay-payment)、运营平台(jeepay-manager)、商户系统(jeepay-merchant)三端,外加聚合码支付和多商户多应用接入。架构图的通道一栏除了微信、支付宝、云闪付,还列了盛付通、京东支付、农业银行等位置。没做的部分也说清楚:它是信息流系统,资金由三方渠道清结算;微信/支付宝的商户资质、证书要你自己申请,开源版不带这些。README 里同时宣传了官方托管服务(面向没有通道资源的团队),那是自建之外的另一件事,跟这份源码是两码事。

技术栈与部署

后端 Spring Boot 3.3.7 + JDK 17 + Spring Security,持久层 MyBatis-Plus 3.4.2,微信 SDK 用 WxJava 4.6.0,工具库 Hutool 5.8.26;数据库 MySQL 5.7.x / 8.0+,缓存 Redis 3.2.8+,MQ 在 RocketMQ / ActiveMQ / RabbitMQ 三者间可切换;前端 Ant Design Vue 4.2.6,在单独的 jeepay-ui 仓库。

README 给了四种部署方式:Shell 脚本一键装、Docker Compose、宝塔面板、自助源码部署(自备 MySQL/Redis/MQ,改 conf/ 后 Maven 打包)。走 Compose 的话:

cd jeepay
mvn clean package -DskipTests
docker compose up -d --build      # 首次:编译镜像 + 启动
docker compose logs -f --tail=100 payment manager merchant

端口:payment / manager / merchant 是 9216 / 9217 / 9218,前端 9226 / 9227 / 9228,MySQL 映射到 13306 避开宿主 3306。默认账号 jeepay / jeepay123,商户端用户要在运营平台创建,默认密码 jeepay666。镜像默认指向华为云 SWR 公开仓库,不依赖 Docker Hub。

干净的 CentOS / Anolis / Ubuntu / Debian 服务器可以走 Shell 一键装,文档里就一条命令:

yum install -y wget curl && wget -O install.sh 
  https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && bash install.sh

脚本自动装依赖、拉镜像、起 8 个容器并跑部署自检,默认安装目录 /jeepayhomes,装完运营平台在 19217 端口。对接侧官方提供 Java、Python SDK 和 PHP Demo,Java SDK 在独立的 jeepay-sdk-java 仓库。

值得抄的三点

一、按职责切三个服务。manager 是运营侧,管服务商、商户、通道配置、支付订单和系统日志;merchant 是商户侧,管订单、退款、应用、分账,还带一个支付测试页;payment 是唯一直接对三方渠道的组件。自建时照这个三分法切,权限和审计边界会清楚很多。

二、聚合码的「两段下单」。README 时序图:用户扫统一码,业务系统先按 UA 判断扫码客户端、生成业务订单,再调统一下单;支付中心验证参数生成支付订单,最后一步才按渠道 ID 调三方。支付订单和业务订单分离,渠道路由后置,排查问题时两边状态可以各查各的。

三、MQ 与 OSS 做成组件模块。jeepay-components-mq、jeepay-components-oss 独立成目录,业务代码不直接碰某一家 MQ 的 API,换 MQ 是配置层面的事。商户端自带支付测试这一点也值得抄:接入前先用平台页面验签名和回调,别拿真订单试。

别踩的坑

– 换 MQ 要同时改 docker-compose.yml 和 conf/payment|manager|merchant/application.yml 两处,只改一处不生效,README 里专门写了这条。

– 上游 RocketMQ 不发 arm64 镜像。ARM 服务器要自行构建,安装前 export rocketmqPlatform=linux/arm64。

– MySQL / Redis 端口被占用会自动换到 13306 / 16379,运维脚本里写死 3306 的会踩。

– 域名 + HTTPS 单独成文(docs/deploy/https.md),说明官方把它当必选课;但证书链、回调域名的具体坑 README 没写,得自己试。

– 前端不在仓库里,compose 默认要求 jeepay 与 jeepay-ui 同级目录,否则要在 .env 覆盖 UI_BASE_DIR。

– 运营端 jeepay123、商户端 jeepay666 这组默认密码直接印在 README 和部署文档里,公网部署第一件事就是改掉,这条 README 不会替你做完。

许可证

LGPL-3.0(LICENSE 文件实测)。以库或组件方式集成时比 GPL 宽松;但修改 LGPL 覆盖的代码本身并分发,修改部分要开源;纯自部署 SaaS、不对外分发制品,触发面小。商用保留许可证与版权声明。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 共2条

请登录后发表评论

    暂无评论内容