# 支付中台 **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

logo

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` | 各服务与宿主机、数据卷、初始化脚本之间的依赖关系如下图所示: ![部署依赖关系图](docker/deploy-deps.png) ## 在线体验 - admin/admin123 - 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 演示地址:http://vue.ruoyi.vip 文档地址:http://doc.ruoyi.vip ## 演示图
## 若依前后端分离交流群 QQ群: [![加入QQ群](https://img.shields.io/badge/已满-937441-blue.svg)](https://jq.qq.com/?_wv=1027&k=5bVB1og) [![加入QQ群](https://img.shields.io/badge/已满-887144332-blue.svg)](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [![加入QQ群](https://img.shields.io/badge/已满-180251782-blue.svg)](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [![加入QQ群](https://img.shields.io/badge/已满-104180207-blue.svg)](https://jq.qq.com/?_wv=1027&k=51G72yr) [![加入QQ群](https://img.shields.io/badge/已满-186866453-blue.svg)](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [![加入QQ群](https://img.shields.io/badge/已满-201396349-blue.svg)](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [![加入QQ群](https://img.shields.io/badge/已满-101456076-blue.svg)](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [![加入QQ群](https://img.shields.io/badge/已满-101539465-blue.svg)](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [![加入QQ群](https://img.shields.io/badge/已满-264312783-blue.svg)](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [![加入QQ群](https://img.shields.io/badge/已满-167385320-blue.svg)](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [![加入QQ群](https://img.shields.io/badge/已满-104748341-blue.svg)](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [![加入QQ群](https://img.shields.io/badge/已满-160110482-blue.svg)](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [![加入QQ群](https://img.shields.io/badge/已满-170801498-blue.svg)](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [![加入QQ群](https://img.shields.io/badge/已满-108482800-blue.svg)](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [![加入QQ群](https://img.shields.io/badge/已满-101046199-blue.svg)](https://jq.qq.com/?_wv=1027&k=SpyH2875) [![加入QQ群](https://img.shields.io/badge/已满-136919097-blue.svg)](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [![加入QQ群](https://img.shields.io/badge/已满-143961921-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [![加入QQ群](https://img.shields.io/badge/已满-174951577-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [![加入QQ群](https://img.shields.io/badge/已满-161281055-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [![加入QQ群](https://img.shields.io/badge/已满-138988063-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [![加入QQ群](https://img.shields.io/badge/已满-151450850-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) [![加入QQ群](https://img.shields.io/badge/已满-224622315-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=F58bgRa-Dp-rsQJThiJqIYv8t4-lWfXh&authKey=UmUs4CVG5OPA1whvsa4uSespOvyd8%2FAr9olEGaWAfdLmfKQk%2FVBp2YU3u2xXXt76&noverify=0&group_code=224622315) [![加入QQ群](https://img.shields.io/badge/已满-287842588-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Nxb2EQ5qozWa218Wbs7zgBnjLSNk_tVT&authKey=obBKXj6SBKgrFTJZx0AqQnIYbNOvBB2kmgwWvGhzxR67RoRr84%2Bus5OadzMcdJl5&noverify=0&group_code=287842588) [![加入QQ群](https://img.shields.io/badge/已满-187944233-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=numtK1M_I4eVd2Gvg8qtbuL8JgX42qNh&authKey=giV9XWMaFZTY%2FqPlmWbkB9g3fi0Ev5CwEtT9Tgei0oUlFFCQLDp4ozWRiVIzubIm&noverify=0&group_code=187944233) [![加入QQ群](https://img.shields.io/badge/已满-228578329-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G6r5KGCaa3pqdbUSXNIgYloyb8e0_L0D&authKey=4w8tF1eGW7%2FedWn%2FHAypQksdrML%2BDHolQSx7094Agm7Luakj9EbfPnSTxSi2T1LQ&noverify=0&group_code=228578329) [![加入QQ群](https://img.shields.io/badge/已满-191164766-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=GsOo-OLz53J8y_9TPoO6XXSGNRTgbFxA&authKey=R7Uy%2Feq%2BZsoKNqHvRKhiXpypW7DAogoWapOawUGHokJSBIBIre2%2FoiAZeZBSLuBc&noverify=0&group_code=191164766) [![加入QQ群](https://img.shields.io/badge/已满-174569686-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=PmYavuzsOthVqfdAPbo4uAeIbu7Ttjgc&authKey=p52l8%2FXa4PS1JcEmS3VccKSwOPJUZ1ZfQ69MEKzbrooNUljRtlKjvsXf04bxNp3G&noverify=0&group_code=174569686) [![加入QQ群](https://img.shields.io/badge/127358632-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=M9y5NjAl44lAL_Vh2crmEehZU_PMU6KS&authKey=ZSDz8hEREWSaPuxQV3gEwqGIaGjfRNnkB4rJjf0IvXhrSUGSGwQFmBA%2Boe8HFxyl&noverify=0&group_code=127358632) 点击按钮入群。