Skip to content

jeequan/jeepay

Repository files navigation

Jeepay Logo

计全支付(Jeepay)- 让支付接入更简单

一套面向互联网企业的开源支付系统,支持普通商户模式、服务商模式、聚合支付与多应用接入。

👉 官网 · 项目文档 · GitHub · Gitee · 前端项目

gitee star github star gitcode star

QQ群


目录


项目简介

Jeepay 是一套面向互联网企业的开源支付系统,支持:

  • 普通商户模式
  • 多渠道服务商模式
  • 聚合码支付
  • 多商户、多应用接入

当前已对接:

  • 微信支付
  • 支付宝
  • 云闪付

项目采用:

  • 后端:Spring Boot
  • 前端:Ant Design Vue
  • 权限体系:Spring Security

Jeepay 适用于支付能力平台化、商户系统建设、支付中台建设以及聚合支付业务的二次开发。


为什么选择 Jeepay

  • 支付能力完整:覆盖下单、退款、通知、分账扩展、渠道管理等常见支付能力
  • 模式灵活:同时支持普通商户与服务商模式
  • 多渠道兼容:已具备微信、支付宝、云闪付等主流渠道接入能力
  • 架构清晰:后端分层明确,前后端分离,适合持续迭代和二开
  • 接入效率高:标准化 HTTP 接口 + 多语言 SDK,业务系统接入成本低
  • 可运维性好:支持 Docker、脚本部署、分布式场景和 MQ 通知机制
  • 支付经验沉淀:由原 XxPay 团队持续开发维护,具备多年实战经验

适用场景

Jeepay 适合以下业务场景:

  • 自建聚合支付平台
  • 多商户支付系统
  • SaaS 平台支付中台
  • 电商、零售、本地生活、数字内容等业务的支付接入
  • 服务商模式下的渠道统一管理与商户统一接入
  • 需要独立掌控支付流程、商户管理、渠道配置和回调通知的项目

如果你希望快速搭建一套可控、可扩展、可二开的支付系统,Jeepay 是比较合适的基础底座。


系统能力概览

支付渠道能力

  • 微信支付:支持服务商 / 普通商户,兼容 V2 / V3
  • 支付宝:支持服务商 / 普通商户,兼容 RSA / RSA2
  • 云闪付:支持服务商接口,可扩展多家机构

平台能力

  • 多商户管理
  • 多应用接入
  • 聚合码支付
  • 订单管理
  • 渠道参数配置
  • 商户通知与回调
  • 支付结果异步通知
  • 权限与账号管理
  • 运营平台与商户平台双端支持

工程能力

  • 前后端分离架构
  • 支持分布式部署
  • 支持高并发场景
  • 支付通知支持多种 MQ
  • 支持 Docker 部署与脚本化安装
  • 支持二次开发与自定义扩展

快速开始

环境要求

组件 要求
JDK 17
Maven 建议 3.8+
MySQL 5.7.x / 8.0+
Redis 3.2.8+
MQ RocketMQ(默认)/ ActiveMQ / RabbitMQ(按需启用)
Node.js 前端工程按 jeepay-ui 要求准备

代码获取

服务端

git clone https://github.com/jeequan/jeepay.git

前端

git clone https://github.com/jeequan/jeepay-ui.git

首次启动建议流程

1. 准备数据库与缓存

  • 创建 MySQL 数据库
  • 导入初始化 SQL
  • 准备 Redis
  • 如需异步通知增强能力,可按需准备 MQ

初始化 SQL 位于:

docs/sql

2. 准备配置文件

项目配置文件位于:

conf/manager/application.yml
conf/merchant/application.yml
conf/payment/application.yml

建议优先完成以下配置:

  • MySQL 连接信息
  • Redis 连接信息
  • 服务端口与环境参数
  • 支付渠道基础配置
  • MQ 配置(如启用)

3. 编译项目

在项目根目录执行:

mvn clean package -DskipTests

4. 启动核心服务

Jeepay 默认包含以下 3 个核心服务:

模块 说明 默认端口
jeepay-payment 支付网关 9216
jeepay-manager 运营平台服务端 9217
jeepay-merchant 商户系统服务端 9218

5. 启动前端项目

前端项目请参考:


部署方式

方式一:宝塔面板一键安装

方式二:Shell 脚本一键安装

Shell 一键安装脚本当前默认部署 RocketMQ,会自动启动 rocketmq-namesrvrocketmq-broker;如需改回 ActiveMQ / RabbitMQ,请同步调整脚本与 conf/*.yml 配置。

CentOS

推荐系统:Anolis OS 8.8

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

Ubuntu

推荐系统:Ubuntu 22.04 64 位

apt update && apt-get -y install docker.io && apt-get -y install git && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh

Shell 脚本默认开放端口

组件 端口 说明
MySQL 3306 数据库
Redis 6379 缓存
RocketMQ NameServer 9876 RocketMQ 注册中心
RocketMQ Broker 10909 / 10911 / 10912 RocketMQ Broker
支付网关 19216 payment 服务
运营平台 19217 manager 服务
商户平台 19218 merchant 服务
Nginx 80 前端静态资源与反向代理

卸载

cd /your/install/path/sources/jeepay/docs/install && sh uninstall.sh

卸载脚本会同时删除 rocketmq-namesrvrocketmq-broker 容器。

Shell 脚本安装常见问题

RocketMQ Broker 启动失败

如果安装过程中卡在 RocketMQ 启动阶段,脚本会自动输出最近日志并直接失败退出。优先检查:

  1. 服务器架构是否兼容 apache/rocketmq:5.3.1
  2. $rootDir/rocketmq/broker/store 目录权限是否正常
  3. $rootDir/rocketmq/broker/conf/broker.conf 是否成功挂载
  4. rocketmq-namesrv 是否已正常启动

可手动执行:

docker logs --tail 50 rocketmq-namesrv
docker logs --tail 100 rocketmq-broker

方式三:自助源码部署

适合需要二次开发、自定义部署架构或接入内部基础设施的团队:

  • 自行准备 MySQL / Redis / MQ
  • 按环境调整 conf 目录配置
  • 使用 Maven 编译打包
  • 分别部署 payment / manager / merchant 服务
  • 独立部署前端工程 jeepay-ui

方式四:Docker Compose 部署

适合希望通过容器快速拉起完整开发 / 测试环境的场景。

目录要求

默认约定:

jeepay-open/
├── jeepay/
└── jeepay-ui/

如果你的前端目录不在 jeepay 同级目录,可在 jeepay/.env 中覆盖 UI_BASE_DIR。 可参考根目录的 .env.example

构建前准备

1. 配置 Docker 国内镜像加速(强烈建议)

国内网络拉取 Docker Hub 镜像较慢或被墙,建议配置多个镜像加速源(单个源随时可能失效,Docker 会自动 fallback)。

Docker daemon 配置示例:

{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io",
    "https://docker.xuanyuan.me",
    "https://hub.rat.dev",
    "https://docker.1panel.live"
  ]
}

配置位置:

  • Linux/etc/docker/daemon.json,修改后执行 sudo systemctl restart docker
  • Docker Desktop(macOS / Windows):Settings -> Docker Engine,写入上述 JSON 后点击 Apply & Restart

验证是否生效:

docker info | grep -A 5 "Registry Mirrors"

2. 编译后端 JAR

jeepay 根目录执行:

mvn clean package -DskipTests

生成的 JAR 位于:

  • jeepay-payment/target/jeepay-payment.jar
  • jeepay-manager/target/jeepay-manager.jar
  • jeepay-merchant/target/jeepay-merchant.jar

3. 准备前端代码

确保 jeepay-ui 仓库已拉取到本地,且目录结构满足上面的要求。

启动方式

# 首次启动(编译镜像 + 启动)
docker compose up -d --build

# 后续启动(跳过编译)
docker compose up -d

# 仅重新编译后端服务
docker compose build payment manager merchant

# 重启某个服务
docker compose restart payment

启动前校验

docker compose config

默认暴露端口

组件 端口 说明
MySQL 13306 映射宿主机 13306,避免与本地 MySQL 冲突
Redis 6380
RocketMQ NameServer 9876
RocketMQ Broker 10909 / 10911 / 10912
payment 9216 支付网关
manager 9217 运营平台后端
merchant 9218 商户系统后端
manager UI 9227 运营平台前端
merchant UI 9228 商户系统前端
cashier UI 9226 收银台前端

默认账号

平台 地址 用户名 密码
运营平台 http://localhost:9227 jeepay jeepay123
商户系统 http://localhost:9228 jeepay jeepay123

核心组件版本

组件 版本 说明
RocketMQ Server 5.3.1 NameServer + Broker
rocketmq-spring-boot-starter 2.3.5 Spring Boot 集成,内置 client 5.3.2
MySQL 8
Redis latest
Java 基础镜像 eclipse-temurin:17-jre openjdk 官方镜像已停止维护

配置说明

  • Compose 默认使用 RocketMQ 作为消息队列,已配置 rocketmq-namesrvrocketmq-broker
  • conf/paymentconf/managerconf/merchant 已默认切换为 rocketMQ,MySQL / Redis 主机名配置为容器内网名 mysqlredis
  • MySQL 映射为 13306:3306,避免与宿主机本地 MySQL 冲突;容器内部服务仍通过 mysql:3306 通信。
  • Java 服务的配置文件通过 volume 挂载,修改 conf/ 目录下的 yml 后重启对应服务即可生效。
  • 如需回退到 ActiveMQ 或切换 RabbitMQ,需同时调整 docker-compose.ymlconf/*.yml

启动后验证

# 查看所有容器状态
docker compose ps

# 查看核心服务日志
docker compose logs --tail=100 payment manager merchant rocketmq-namesrv rocketmq-broker

# 确认 RocketMQ Broker 启动成功(应看到 "boot success")
docker logs jeepay-rocketmq-broker 2>&1 | grep "boot success"

常见问题

RocketMQ Broker 启动失败(NullPointerException)

如果 Broker 日志中出现 ScheduleMessageService.configFilePath 相关 NPE,通常是 Docker named volume 的权限问题。RocketMQ 5.x 镜像以 rocketmq(uid=3000)用户运行,而 Docker 创建的 volume 默认 root 权限。

Compose 中已通过 user: "0:0" 解决此问题。如果手动部署遇到此问题,可执行:

docker run --rm -u root -v jeepay_rocketmq_broker_store:/data alpine chown -R 3000:3000 /data
docker run --rm -u root -v jeepay_rocketmq_broker_logs:/data alpine chown -R 3000:3000 /data

Apple Silicon(M1/M2/M3)注意事项

RocketMQ 官方镜像仅提供 linux/amd64 版本,在 Apple Silicon 上通过 Rosetta 2 模拟运行,启动较慢属于正常现象。确保 Docker Desktop 已开启 "Use Rosetta for x86_64/amd64 emulation on Apple Silicon"。

前端镜像构建失败

优先检查:

  • jeepay-ui 目录是否存在且在正确位置
  • Node.js 依赖是否可正常安装(npm 源是否可达)

登录提示"认证服务出现异常"

检查 conf/*/application.yml 中的数据库连接配置是否与 docker-compose.yml 中的 MySQL 密码一致。Compose 默认 root 密码为 rootroot

镜像拉取失败(403 Forbidden)

镜像加速源可能失效,建议配置多个加速源(参见上方"配置 Docker 国内镜像加速"),Docker 会自动尝试下一个。


项目结构

jeepay
├── conf                     # 系统部署所需 yml 配置
├── docker                   # Docker 相关文件
├── docs                     # 项目文档
│   ├── install              # 安装脚本
│   ├── script               # 启动脚本
│   └── sql                  # 初始化 SQL 文件
├── jeepay-components        # 公共组件目录
│   ├── jeepay-components-mq # MQ 组件
│   └── jeepay-components-oss# OSS 组件
├── jeepay-core              # 核心依赖模块
├── jeepay-manager           # 运营平台服务端(9217)
├── jeepay-merchant          # 商户系统服务端(9218)
├── jeepay-payment           # 支付网关(9216)
├── jeepay-service           # 业务层代码
└── jeepay-z-codegen         # MyBatis 代码生成模块

仓库关系

仓库 作用
jeepay 服务端主仓库,包含支付网关、运营平台、商户平台、核心服务
jeepay-ui 前端项目
jeepay-sdk-java Java SDK,供业务系统对接 Jeepay 接口时使用

系统架构

Jeepay 计全支付系统架构图

Jeepay系统架构图

Jeepay 聚合码支付流程图

Jeepay计全支付聚合码支付流程图


核心技术栈

软件名称 描述 版本
JDK Java 运行环境 17
Spring Boot 后端开发框架 3.3.7
Redis 分布式缓存 3.2.8 或更高版本
MySQL 数据库 5.7.x / 8.0+
MQ 消息中间件 ActiveMQ / RabbitMQ / RocketMQ
Ant Design Vue 前端 UI 框架 4.2.6
MyBatis-Plus MyBatis 增强工具 3.4.2
WxJava 微信开发 Java SDK 4.6.0
Hutool Java 工具类库 5.8.26

文档与资源

官方文档

SDK 资源

Jeepay 已提供 Java、Python SDK,以及 PHP 对接 Demo,方便业务系统快速接入。

项目地址

服务端项目

前端项目


接口市场

计全官方团队基于开源版代码,持续开发了多家第三方支付机构、银行以及扩展支付接口的对接代码,帮助用户更快完成支付能力接入。

已发布接口示例

三方支付

汇付 Adapay、斗拱支付、支付宝直付通、微信收付通、银盛支付、银联条码前置、银联支付、联动优势、国通星驿付、丰付支付、盛付通、乐刷、杉德支付、瑞银信、拉卡拉、汇聚支付、新生支付、河马支付、海科融通、富友支付、易生支付、支付宝云支付、通联支付。

银行

工行支付、浦发银行、建行龙支付、交行支付。

四方支付

付呗支付、米花支付。


在线体验

支付体验

管理平台体验


功能模块

Jeepay 运营平台功能

Jeepay运营平台功能

Jeepay 商户系统功能

Jeepay商户系统功能


系统截图

以下截图来源于已实现功能界面,截图时间:2021-07-06 08:59

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面


版本与兼容性说明

  • 当前项目采用 Spring Boot 3.3.7
  • 当前项目要求 JDK 17
  • 数据库建议使用 MySQL 5.7.x8.0+
  • Redis 建议使用 3.2.8+
  • MQ 为可选增强组件,可根据实际业务场景选择启用
  • 如需对接前端,请同步使用 jeepay-ui 对应版本
  • 如需通过 SDK 对接业务系统,请优先使用官方 SDK 或示例代码

贡献与协作

欢迎通过以下方式参与项目共建:

  • 提交 Issue 反馈问题
  • 提交 Pull Request 改进功能或文档
  • 完善渠道对接能力
  • 补充部署文档、二开文档和示例代码

协作建议

  • 提交前请确保核心功能可运行
  • 涉及接口变更时请同步补充文档
  • 涉及配置项变更时请补充默认值说明
  • 涉及数据库变更时请同步提供 SQL 脚本
  • 建议提交聚焦单一主题,便于评审和合并

更多支持

欢迎关注官方渠道,获取更多产品动态、部署指导与社区支持。

官方公众号

微信扫描下方二维码,关注 计全科技 公众号:

计全科技公众号

官方微信交流群

微信扫描下方二维码加入官方交流群。若项目对你有帮助,欢迎先点一个 Star 支持。

Jeepay微信交流群

微信客服

About

Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors