# 支付中台
**Repository Path**: hnu-turing/payment-processing-platform
## Basic Information
- **Project Name**: 支付中台
- **Description**: 本项目在若依基础上新增统一支付中心模块 ruoyi-pay,内置 支付宝、微信支付、余额支付 三种业务渠道(另附教学用 mock 模拟渠道,下单即成功便于联调),实现支付渠道灵活扩展与统一管理。
设计要点:渠道扩展点 IPayChannelHandler(策略模式)+ PayChannelFactory 启动时自动注册(工厂模式)。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2026-08-15
- **Last Updated**: 2026-08-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
RuoYi v3.9.2
基于SpringBoot+Vue前后端分离的Java快速开发框架
## 平台简介
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
* 前端采用Vue、Element UI。
* 后端采用Spring Boot、Spring Security、Redis & Jwt。
* 权限认证使用Jwt,支持多终端认证系统。
* 支持加载动态权限菜单,多方式轻松权限控制。
* 高效率开发,使用代码生成器可以一键生成前后端代码。
* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)
# 版本分支
RuoYi-Vue 后端项目提供 Spring Boot 2.x / 3.x / 4.x 多版本分支的并行维护。
| 名称 | 说明 | 地址 |
| :---------------- | :------------------------ | :------------------------------------------------------ |
| master 默认分支 | Spring Boot 4.x (JDK 17+) | https://gitee.com/y_project/RuoYi-Vue |
| springboot3 分支 | Spring Boot 3.x (JDK 17+) | https://gitee.com/y_project/RuoYi-Vue/tree/springboot3 |
| springboot2 分支 | Spring Boot 2.x (JDK 8+) | https://gitee.com/y_project/RuoYi-Vue/tree/springboot2 |
RuoYi-Vue 前端项目提供 Vue 2.x / 3.x / JavaScript TypeScript 版本均可混用搭配
| 项目名称 | **RuoYi-Vue** | **RuoYi-Vue3** | **RuoYi-Vue3-TypeScript** |
| :--- | :--- | :--- | :--- |
| **前端框架** | Vue 2 | Vue 3 | Vue 3 |
| **脚本语言** | JavaScript | JavaScript | TypeScript |
| **构建工具** | Vue CLI | Vite | Vite |
| **UI 组件库** | Element UI | Element Plus | Element Plus |
| **状态管理** | Vuex | Pinia | Pinia |
| **路由管理** | Vue Router 3 | Vue Router 4 | Vue Router 4 |
| **核心特点** | 1. 技术栈经典稳定
2. 社区资料丰富
3. 当前维护重心已转移 | 1. 现代前端技术栈
2. 开发体验与性能更优
3. 官方主推的活跃版本 | 1. 类型加持,减少沟通成本
2. 开发时有提示,效率更高
3. 多人协作企业级开发项目 |
| **仓库地址** | [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) | [RuoYi-Vue3](https://gitcode.com/yangzongzhuan/RuoYi-Vue3) | [RuoYi-Vue3-TypeScript](https://gitcode.com/yangzongzhuan/RuoYi-Vue3/tree/typescript) |
## 内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3. 岗位管理:配置系统用户所属担任职务。
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. 参数管理:对系统动态配置常用参数。
8. 通知公告:系统通知公告信息发布维护。
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. 登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
14. 系统接口:根据业务代码自动生成相关的api接口文档。
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16. 缓存监控:对系统的缓存信息查询,命令统计等。
17. 在线构建器:拖动表单元素生成相应的HTML代码。
18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
## 扩展模块:支付中心(ruoyi-pay)
本项目在若依基础上新增**统一支付中心**模块 `ruoyi-pay`,内置 **支付宝**、**微信支付**、**余额支付** 三种业务渠道(另附教学用 mock 模拟渠道,下单即成功便于联调),实现支付渠道**灵活扩展**与**统一管理**。
1. 渠道管理:`pay_channel` 统一维护各渠道 AppID、商户号、密钥、网关、回调地址,支持启停。
2. 统一下单:`POST /pay/order` 按渠道编码路由到对应渠道,返回支付参数(二维码内容)。
3. 异步通知:`POST /pay/notify/{channelCode}` 匿名放行,验签 + 金额校验 + 状态前置条件幂等入账。
4. 统一退款:`POST /pay/refund` 渠道退款原路退回,累计退款不超过订单金额。
5. 补偿手段:主动查单 `POST /pay/order/sync/{orderNo}`、关闭订单 `POST /pay/order/close/{orderNo}`。
6. 余额支付:内部渠道下单即扣款,`pay_account` + `pay_account_transaction` 账户/流水双表可追溯。
7. 回调日志:`pay_notify_log` 全量记录通知原文、验签结果、处理结果,便于对账排障。
设计要点:渠道扩展点 `IPayChannelHandler`(策略模式)+ `PayChannelFactory` 启动时自动注册(工厂模式)。**新增支付渠道(如银联)只需新增一个 `@Component` 实现类,并在「支付中心 → 渠道管理」中维护配置,无需改动框架任何代码。**
* 模块说明与渠道扩展实战:[ruoyi-pay/README.md](ruoyi-pay/README.md)
* 配套课程讲义(架构图、时序图、策略/工厂模式精讲、面试题附录):[ruoyi-pay/docs/支付中心课程讲义.md](ruoyi-pay/docs/支付中心课程讲义.md)
* 项目全套文档(架构/库表/接口/流程/部署):[ruoyi-pay/docs/项目文档.md](ruoyi-pay/docs/项目文档.md)
* 配套面试八股文(48 问:设计模式/幂等/事务/账务/分布式):[ruoyi-pay/docs/面试八股文.md](ruoyi-pay/docs/面试八股文.md)
* 前端页面:`ruoyi-ui/src/views/pay/`(支付订单、退款记录、渠道管理、回调日志、账户余额、账户流水)
* 初始化脚本:`sql/pay.sql`(支付核心表+菜单字典)、`sql/pay_balance.sql`(余额支付)、`sql/pay_mock.sql`(模拟渠道)
## Docker 快速启动
根目录已内置整套 Docker 编排,一条命令拉起 **MySQL + Redis + 后端 + 前端**(含支付中心全部表结构与菜单初始数据,无需手工导库):
```bash
# 构建并启动全部服务(首次较慢,需拉取镜像与依赖)
docker compose up -d --build
# 查看运行状态
docker compose ps
# 跟踪后端启动日志(看到 Started RuoYiApplication 即成功)
docker logs -f ruoyi-backend
# 停止 / 停止并清空数据卷(重置数据库)
docker compose down
docker compose down -v
```
* 前端入口:http://localhost (nginx 托管 `ruoyi-ui/dist`,并将 `/prod-api/` 反代到后端)
* 后端接口:http://localhost:8080 ;宿主机连数据库用 `localhost:3307`(root/password,库名 `ry-vue`)
编排文件清单:
| 文件 | 作用 |
| --- | --- |
| `docker-compose.yml` | 定义 frontend / backend / mysql / redis 四服务,mysql 健康检查通过后再启动 backend |
| `Dockerfile` | 后端多阶段构建:maven 编译 `ruoyi-admin`,jre 运行(端口 8080) |
| `ruoyi-ui/Dockerfile` + `ruoyi-ui/nginx.docker.conf` | 前端构建 dist 并经 nginx 反代 `/prod-api/` |
| `docker/maven-settings.xml` | 后端构建加速(阿里云仓库镜像) |
| `docker/mysql-init/*.sql` | 按序自动初始化:`ry_20260417` → `quartz` → `pay` → `pay_balance` → `pay_mock` |
各服务与宿主机、数据卷、初始化脚本之间的依赖关系如下图所示:

## 在线体验
- admin/admin123
- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
演示地址:http://vue.ruoyi.vip
文档地址:http://doc.ruoyi.vip
## 演示图
## 若依前后端分离交流群
QQ群: [](https://jq.qq.com/?_wv=1027&k=5bVB1og) [](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [](https://jq.qq.com/?_wv=1027&k=51G72yr) [](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [](https://jq.qq.com/?_wv=1027&k=SpyH2875) [](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=F58bgRa-Dp-rsQJThiJqIYv8t4-lWfXh&authKey=UmUs4CVG5OPA1whvsa4uSespOvyd8%2FAr9olEGaWAfdLmfKQk%2FVBp2YU3u2xXXt76&noverify=0&group_code=224622315) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Nxb2EQ5qozWa218Wbs7zgBnjLSNk_tVT&authKey=obBKXj6SBKgrFTJZx0AqQnIYbNOvBB2kmgwWvGhzxR67RoRr84%2Bus5OadzMcdJl5&noverify=0&group_code=287842588) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=numtK1M_I4eVd2Gvg8qtbuL8JgX42qNh&authKey=giV9XWMaFZTY%2FqPlmWbkB9g3fi0Ev5CwEtT9Tgei0oUlFFCQLDp4ozWRiVIzubIm&noverify=0&group_code=187944233) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G6r5KGCaa3pqdbUSXNIgYloyb8e0_L0D&authKey=4w8tF1eGW7%2FedWn%2FHAypQksdrML%2BDHolQSx7094Agm7Luakj9EbfPnSTxSi2T1LQ&noverify=0&group_code=228578329) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=GsOo-OLz53J8y_9TPoO6XXSGNRTgbFxA&authKey=R7Uy%2Feq%2BZsoKNqHvRKhiXpypW7DAogoWapOawUGHokJSBIBIre2%2FoiAZeZBSLuBc&noverify=0&group_code=191164766) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=PmYavuzsOthVqfdAPbo4uAeIbu7Ttjgc&authKey=p52l8%2FXa4PS1JcEmS3VccKSwOPJUZ1ZfQ69MEKzbrooNUljRtlKjvsXf04bxNp3G&noverify=0&group_code=174569686) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=M9y5NjAl44lAL_Vh2crmEehZU_PMU6KS&authKey=ZSDz8hEREWSaPuxQV3gEwqGIaGjfRNnkB4rJjf0IvXhrSUGSGwQFmBA%2Boe8HFxyl&noverify=0&group_code=127358632) 点击按钮入群。