# jeepay
**Repository Path**: jeequan/jeepay
## Basic Information
- **Project Name**: jeepay
- **Description**: Jeepay计全支付是一套适合企业使用的开源支付系统,提供聚合支付接口,包括交易、退款、转账、分账等。已对接微信,支付宝,云闪付官方接口,以及三方支付和银行的间联通道,支持聚合支付场景。
- **Primary Language**: Java
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: https://www.jeequan.com
- **GVP Project**: Yes
## Statistics
- **Stars**: 13381
- **Forks**: 5966
- **Created**: 2017-08-12
- **Last Updated**: 2026-04-17
## Categories & Tags
**Categories**: payment-dev
**Tags**: 聚合支付系统, SpringBoot
## README
计全支付(Jeepay)- 让支付接入更简单
一套面向互联网企业的开源支付系统,支持普通商户模式、服务商模式、聚合支付与多应用接入。
👉 官网 ·
项目文档 ·
GitHub ·
Gitee ·
前端项目
---
# 目录
- [项目简介](#项目简介)
- [为什么选择 Jeepay](#为什么选择-jeepay)
- [适用场景](#适用场景)
- [系统能力概览](#系统能力概览)
- [快速开始](#快速开始)
- [部署方式](#部署方式)
- [项目结构](#项目结构)
- [系统架构](#系统架构)
- [核心技术栈](#核心技术栈)
- [文档与资源](#文档与资源)
- [接口市场](#接口市场)
- [在线体验](#在线体验)
- [功能模块](#功能模块)
- [系统截图](#系统截图)
- [版本与兼容性说明](#版本与兼容性说明)
- [贡献与协作](#贡献与协作)
- [更多支持](#更多支持)
---
# 项目简介
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` 要求准备 |
## 代码获取
### 服务端
```bash
git clone https://github.com/jeequan/jeepay.git
```
### 前端
```bash
git clone https://github.com/jeequan/jeepay-ui.git
```
## 首次启动建议流程
### 1. 准备数据库与缓存
- 创建 MySQL 数据库
- 导入初始化 SQL
- 准备 Redis
- 如需异步通知增强能力,可按需准备 MQ
初始化 SQL 位于:
```text
docs/sql
```
### 2. 准备配置文件
项目配置文件位于:
```text
conf/manager/application.yml
conf/merchant/application.yml
conf/payment/application.yml
```
建议优先完成以下配置:
- MySQL 连接信息
- Redis 连接信息
- 服务端口与环境参数
- 支付渠道基础配置
- MQ 配置(如启用)
### 3. 编译项目
在项目根目录执行:
```bash
mvn clean package -DskipTests
```
### 4. 启动核心服务
Jeepay 默认包含以下 3 个核心服务:
| 模块 | 说明 | 默认端口 |
|---|---|---|
| `jeepay-payment` | 支付网关 | `9216` |
| `jeepay-manager` | 运营平台服务端 | `9217` |
| `jeepay-merchant` | 商户系统服务端 | `9218` |
### 5. 启动前端项目
前端项目请参考:
-
---
# 部署方式
## 方式一:宝塔面板一键安装
- 安装 **宝塔面板 9.2.0 及以上版本**
- 在 Docker 应用中搜索 `jeepay`
- 按页面指引完成一键安装
- 教程:
## 方式二:Shell 脚本一键安装
> Shell 一键安装脚本当前默认部署 **RocketMQ**,会自动启动 `rocketmq-namesrv` 与 `rocketmq-broker`;如需改回 ActiveMQ / RabbitMQ,请同步调整脚本与 `conf/*.yml` 配置。
### CentOS
> 推荐系统:Anolis OS 8.8
```bash
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 位
```bash
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` | 前端静态资源与反向代理 |
### 卸载
```bash
cd /your/install/path/sources/jeepay/docs/install && sh uninstall.sh
```
> 卸载脚本会同时删除 `rocketmq-namesrv` 与 `rocketmq-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` 是否已正常启动
可手动执行:
```bash
docker logs --tail 50 rocketmq-namesrv
docker logs --tail 100 rocketmq-broker
```
## 方式三:自助源码部署
适合需要二次开发、自定义部署架构或接入内部基础设施的团队:
- 自行准备 MySQL / Redis / MQ
- 按环境调整 `conf` 目录配置
- 使用 Maven 编译打包
- 分别部署 `payment / manager / merchant` 服务
- 独立部署前端工程 `jeepay-ui`
## 方式四:Docker Compose 部署
适合希望通过容器快速拉起完整开发 / 测试环境的场景。
### 目录要求
默认约定:
```text
jeepay-open/
├── jeepay/
└── jeepay-ui/
```
如果你的前端目录不在 `jeepay` 同级目录,可在 `jeepay/.env` 中覆盖 `UI_BASE_DIR`。
可参考根目录的 `.env.example`。
### 构建前准备
#### 1. 配置 Docker 国内镜像加速(强烈建议)
国内网络拉取 Docker Hub 镜像较慢或被墙,建议配置多个镜像加速源(单个源随时可能失效,Docker 会自动 fallback)。
Docker daemon 配置示例:
```json
{
"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
验证是否生效:
```bash
docker info | grep -A 5 "Registry Mirrors"
```
#### 2. 编译后端 JAR
在 `jeepay` 根目录执行:
```bash
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` 仓库已拉取到本地,且目录结构满足上面的要求。
### 启动方式
```bash
# 首次启动(编译镜像 + 启动)
docker compose up -d --build
# 后续启动(跳过编译)
docker compose up -d
# 仅重新编译后端服务
docker compose build payment manager merchant
# 重启某个服务
docker compose restart payment
```
### 启动前校验
```bash
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-namesrv` 与 `rocketmq-broker`。
- `conf/payment`、`conf/manager`、`conf/merchant` 已默认切换为 `rocketMQ`,MySQL / Redis 主机名配置为容器内网名 `mysql`、`redis`。
- MySQL 映射为 `13306:3306`,避免与宿主机本地 MySQL 冲突;容器内部服务仍通过 `mysql:3306` 通信。
- Java 服务的配置文件通过 volume 挂载,修改 `conf/` 目录下的 yml 后重启对应服务即可生效。
- 如需回退到 ActiveMQ 或切换 RabbitMQ,需同时调整 `docker-compose.yml` 与 `conf/*.yml`。
### 启动后验证
```bash
# 查看所有容器状态
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"` 解决此问题。如果手动部署遇到此问题,可执行:
```bash
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 会自动尝试下一个。
---
# 项目结构
```text
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 聚合码支付流程图

---
# 核心技术栈
| 软件名称 | 描述 | 版本 |
|---|---|---|
| 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,方便业务系统快速接入。
- SDK 下载地址:
- Java SDK 仓库:
## 项目地址
### 服务端项目
- GitHub:
- Gitee:
- GitCode:
### 前端项目
- GitHub:
- Gitee:
- GitCode:
---
# 接口市场
计全官方团队基于开源版代码,持续开发了多家第三方支付机构、银行以及扩展支付接口的对接代码,帮助用户更快完成支付能力接入。
- 接口市场:
- 插件安装说明:
## 已发布接口示例
### 三方支付
汇付 Adapay、斗拱支付、支付宝直付通、微信收付通、银盛支付、银联条码前置、银联支付、联动优势、国通星驿付、丰付支付、盛付通、乐刷、杉德支付、瑞银信、拉卡拉、汇聚支付、新生支付、河马支付、海科融通、富友支付、易生支付、支付宝云支付、通联支付。
### 银行
工行支付、浦发银行、建行龙支付、交行支付。
### 四方支付
付呗支付、米花支付。
---
# 在线体验
## 支付体验
- Jeepay 支付流程体验:
## 管理平台体验
- Jeepay 运营平台 / 商户系统演示:
---
# 功能模块
> Jeepay 运营平台功能

> Jeepay 商户系统功能

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













---
# 版本与兼容性说明
- 当前项目采用 `Spring Boot 3.3.7`
- 当前项目要求 `JDK 17`
- 数据库建议使用 `MySQL 5.7.x` 或 `8.0+`
- Redis 建议使用 `3.2.8+`
- MQ 为可选增强组件,可根据实际业务场景选择启用
- 如需对接前端,请同步使用 `jeepay-ui` 对应版本
- 如需通过 SDK 对接业务系统,请优先使用官方 SDK 或示例代码
---
# 贡献与协作
欢迎通过以下方式参与项目共建:
- 提交 Issue 反馈问题
- 提交 Pull Request 改进功能或文档
- 完善渠道对接能力
- 补充部署文档、二开文档和示例代码
## 协作建议
- 提交前请确保核心功能可运行
- 涉及接口变更时请同步补充文档
- 涉及配置项变更时请补充默认值说明
- 涉及数据库变更时请同步提供 SQL 脚本
- 建议提交聚焦单一主题,便于评审和合并
---
# 更多支持
欢迎关注官方渠道,获取更多产品动态、部署指导与社区支持。
## 官方公众号
微信扫描下方二维码,关注 **计全科技** 公众号:

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

## 微信客服
- 微信客服咨询: