# epay-web
**Repository Path**: dengjie4641/epay-web
## Basic Information
- **Project Name**: epay-web
- **Description**: 个人免签支付收款解决方案,一款基于 Spring Boot 开发的轻量级个人收款支付解决方案,支持支付宝、微信、QQ钱包、云闪付等多种支付方式,无需企业资质即可实现个人收款的解决方案;ePay 是一个面向个人开发者和小微商户的收款系统,通过创新的"人工智障"检测机制和多码轮询技术,实现了无需签约官方支付接口即可完成收款的功能。系统支持实时到账通知、订单管理、多支付渠道等特性。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: http://5epay.cn
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-01-10
- **Last Updated**: 2026-01-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ePay 个人收款支付系统
[](https://spring.io/projects/spring-boot)
[](https://baomidou.com/)
[](https://www.oracle.com/java/technologies/javase-downloads.html)
[](LICENSE)
> 一款基于 Spring Boot 开发的轻量级个人收款支付解决方案,支持支付宝、微信、QQ钱包、云闪付等多种支付方式,无需企业资质即可实现个人收款。
## 📖 项目简介
ePay 是一个面向个人开发者和小微商户的收款系统,通过创新的"人工智障"检测机制和多码轮询技术,实现了无需签约官方支付接口即可完成收款的功能。系统支持实时到账通知、订单管理、多支付渠道等特性。
## ✨ 核心特性
- 🔐 **多支付渠道** - 支持支付宝、微信、QQ钱包、云闪付等主流支付方式
- 💰 **个人收款** - 无需企业资质,个人即可使用
- � **多支码轮询** - 同金额多备注收款码轮询,支持高并发场景
- � **一键唤起** - 支持 H5 一键唤起支付宝/微信 APP 支付
- � **实时通询知** - WebSocket 实时推送支付结果,邮件/短信通知
- �️ ***风控规避** - 多种支付模式可选,有效降低风控风险
- � **订单管知理** - 完善的后台管理系统,支持订单查询、统计分析
## 🏗️ 技术架构
### 系统架构图
```
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Web │ │ H5 │ │ APP │ │ 小程序 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼────────────┼──────────────┘
└────────────┴─────┬──────┴────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Nginx 反向代理 │
└─────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Spring Boot 应用层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Controller │ │ Service │ │ Mapper │ │
│ │ 控制层 │──▶│ 业务层 │──▶│ 数据层 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ WebSocket │ │ Shiro │ │ XSS │ │
│ │ 实时通信 │ │ 安全框架 │ │ 过滤器 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据存储层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MySQL │ │ Redis │ │ EhCache │ │
│ │ 持久存储 │ │ 会话缓存 │ │ 本地缓存 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
### 技术栈
| 分类 | 技术 | 版本 | 说明 |
|------|------|------|------|
| 核心框架 | Spring Boot | 2.4.8 | 应用主框架 |
| ORM 框架 | MyBatis Plus | 3.4.1 | 数据持久化 |
| 数据库 | MySQL | 8.0+ | 关系型数据库 |
| 缓存 | Redis | - | 会话/数据缓存 |
| 连接池 | Druid | 1.2.14 | 数据库连接池 |
| 安全框架 | Apache Shiro | 1.9.1 | 认证授权 |
| 模板引擎 | Thymeleaf | 2.4.1 | 页面渲染 |
| 实时通信 | WebSocket | 2.7.12 | 支付结果推送 |
| 工具库 | Hutool | 5.7.22 | Java 工具集 |
| 二维码 | ZXing | 3.3.3 | 二维码生成解析 |
| 分页 | PageHelper | 1.2.10 | 分页插件 |
### 第三方服务集成
| 服务 | 说明 |
|------|------|
| 支付宝 SDK | 支付宝当面付、转账等功能 |
| YunGouOS | 个人微信支付(小微商户) |
| 腾讯云短信 | 短信通知服务 |
| 阿里云短信 | 短信通知服务 |
| JavaMail | 邮件通知服务 |
## 📁 项目结构
```
epay-web
├── src/main/java/cn/epay
│ ├── annotation/ # 自定义注解
│ ├── config/ # 配置类 (Redis/WebSocket/Shiro等)
│ ├── constant/ # 常量定义
│ ├── enums/ # 枚举类
│ ├── exception/ # 全局异常处理
│ ├── schedule/ # 定时任务
│ ├── utils/ # 工具类
│ ├── web/
│ │ ├── bean/ # 实体类
│ │ ├── controller/ # 控制器
│ │ ├── mapper/ # 数据访问层
│ │ ├── service/ # 业务逻辑层
│ │ └── socket/ # WebSocket 处理
│ └── xss/ # XSS 过滤
├── src/main/resources
│ ├── mapper/ # MyBatis XML 映射文件
│ ├── static/assets/qr/ # 收款码图片
│ └── templates/ # Thymeleaf 模板
├── sql/ # 数据库脚本
├── Dockerfile # Docker 构建文件
└── pom.xml # Maven 依赖
```
---
## 🎮 在线演示
| 平台 | 地址 |
|------|------|
| 🌐 PC 端 | [http://5epay.cn](http://5epay.cn) |
| 📱 手机端 | 扫描下方二维码体验 |
微信/支付宝扫码体验
---
## 📚 原理与使用说明
> 基于 Java 开发,新手请先学习 Spring Boot 相关教程
**ePay 原理流程详见**: https://github.com/dengjie/ePay
### 支付宝官方获取 userId 方式
- 支付宝内打开链接:`https://render.alipay.com/p/f/fd-ixpo7iia/index.html`
- 或使用支付宝扫描该文件夹根目录下中的二维码
- userId 获取:请进入蚂蚁金服开放平台官网,登录后点击右上角进入账户管理或账户信息,在合作伙伴管理下方即可找到你的角色身份 PID,那串数字即为你的 userId,其他方法请自行搜索
---
### v2.0 新增支付宝扫码点单模式
- 借助支付宝"扫码点单"小程序,只需开通商家收款码即可开通
- 备注号对应桌号
- 详细使用说明见 word 图文文档
---
### v1.9 新增支付宝一键红包支付模式以及云闪付说明
- 红包模式正规个人业务没必要使用,量大怕风控者用的
- 需先执行加好友,支付宝需在 **设置 → 隐私 → 常用隐私设置** 中关闭加好友需要验证
- 加好友示例:
```
alipays://platformapi/startapp?appId=20000186&actionType=addfriend&userId=支付宝userId&loginId=支付宝账号&source=by_f_v&alert=true
```
- 仅支持普通红包,目前 H5 中可一键拉起,URL 中的中文(如支付宝昵称)需经过 encode 编码
- 红包示例:
```
alipays://platformapi/startapp?appId=88886666&appLaunchMode=3&canSearch=false&chatLoginId=支付宝账号&chatUserId=支付宝userId&chatUserName=支付宝昵称&chatUserType=1&entryMode=personalStage&prevBiz=chat&schemaMode=portalInside&target=personal&money=金额&amount=金额&remark=备注
```
- **云闪付说明**:由于官方风控,生成的固码具有时效性(一定时间后无法扫码)
- 解决方案:请务必使用商家收款码(APP 中申请即可),由于商家收款码无法添加备注,匹配支付标识采用不同优惠价格实现,优惠规则详见 `pay.html` 中 487 行 JS 代码
- **v1.9 需要替换的地方**:
```
alipay.html 中你的访问域名前缀,替换 ePay.dengjie.cn
openAlipay.html 中支付宝 userId、银行卡转账信息、红包模式所需支付宝账号相关信息
qr/unipay 二维码文件夹只需配置云闪付商家收款码
```
---
### v1.8 新增银行卡转账模式
- 转银行卡模式正规个人业务没必要使用,量大怕风控者用的
- 支付宝内打开该 Web 应用示例:
```
https://ds.alipay.com/?from=pc&appId=09999988&actionType=toCard&sourceId=bill&cardNo=银行卡卡号&bankAccount=持卡人姓名&money=金额&amount=金额&bankMark=银行缩写简写&bankName=银行完整名称&tdsourcetag=s_pctim_aiomsg
```
> URL 中文记得需经过 encode 编码
- **v1.8 增加需要替换的地方**:
```
alipay.html 中你的访问域名前缀,替换 ePay.dengjie.cn
openAlipay.html 中的银行卡转账信息
```
---
### v1.7 支付宝转账码原理
- 拉起支付宝 APP 借助 [支付宝 H5 JSAPI](http://myjsapi.alipay.com/jsapi/index.html),先打开指定网页,URL 需经过 encode 编码
- 示例:`alipays://platformapi/startapp?appId=20000067&url=http%3A%2F%2Fm.taobao.com`
- 无法修改金额转账应用示例:
```
alipays://platformapi/startapp?appId=20000123&actionType=scan&biz_data={"s": "money","u": "你的支付宝userId","a": "金额","m": "备注"}
```
- **v1.7 需要替换的地方**:
```
alipay.html 中的访问域名如 ePay.dengjie.cn 和支付宝 userId
openAlipay.html 中的自定义金额收款码
```
---
### v1.6 支付宝转账码原理
- 示例:
```
alipays://platformapi/startapp?appId=09999988&actionType=toAccount&goBack=NO&userId=你的支付宝userId&amount=金额&memo=备注
```
- **userId 获取**:请进入蚂蚁金服开放平台官网,登录后点击右上角进入账户管理或账户信息,在合作伙伴管理下方即可找到你的角色身份 PID,那串数字即为你的 userId
- **Scheme 原理说明**:通过 scheme 启动,scheme 可以理解为一种特殊的 URI,格式与 URI 相同。支付宝客户端的标准 scheme 为:`alipays://platformapi/startapp?appId=`,即为 H5App 自身的 appId。但如果是某些运营页之类的单独页面,没有自己的 appId,可以使用 Nebula 容器的通用浏览器模式 `appId=20000067` 来启动,同时将需要打开的 H5 页面 URL 经过 encode 编码后设置到 url 参数内
- 其中 `appId=09999988` 为支付宝内转账码 H5 应用,不得修改
- 测试链接:
```html
测试一键打开支付宝APP支付
```
- ⚠️ 若转账码被封将退回 v1.5 版本,请各位做好被封心理准备
---
### v1.5 支付宝风控解决方案
- 固码收款将非常容易触发风控,因此废弃固码,仅支持自定义金额输入
- 由于 ePay 天生的"人工智障"检测优势,支持用户自定义金额输入(要求用户输入订单备注)
---
### v1.2 升级原理说明
- **多码轮询机制**:创建多张同金额不同备注的收款码,支付时挨个递增选取,实现订单支付标识。添加的越多,越能实现多人短时间内同时支付
- 配置二维码数量在 `application.properties` 中修改
- 二维码配置在 `src/main/resources/static/assets/qr` 文件内
- 具体支付宝支付为 `alipay` 文件夹,`1.00元` 分为单个 `1.00` 文件夹
- 其中多个图片命名由 `1` 递增,订单备注需和 `1` 相同或者设置为你能识别对应的
- 图格式为 `.png`,图片数不得少于你在 `application.properties` 中配置的
- **自定义金额收款**:需用户输入系统自动生成的四位数随机码,实现订单支付标识,图片名为 `custom.png`
- **一键打开支付宝 App 配置**(支持安卓浏览器、不支持微信)【固码已凉,仅支持自定义码】
- 将生成的支付宝收款码解析链接后放入 href 即可
- 例如:`HTTPS://QR.ALIPAY.COM/FKX05348YGHADA5W9JJV66`
- 示例代码:
```html
一键打开支付宝APP支付
```
- 具体页面中取链接配置参考 `alipay.html` 页面 JS 代码
---
## 🚀 本地开发运行部署
### 环境要求
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+(必须)
### 安装步骤
1. **安装 Maven**(不会请自行搜索),根目录下执行:
```bash
mvn install
```
2. **新建数据库**
```sql
CREATE DATABASE epay-web DEFAULT CHARACTER SET utf8mb4;
```
> 已开启自动生成数据库表,运行项目后即自动创建,也可以导入 `sql/` 目录下的脚本
3. **修改配置**
在 `application.properties` 中修改你的配置,例如端口、数据库、Redis、邮箱配置等,其中有详细注释
4. **运行项目**
运行 `EpayWebApplication.java`
5. **访问系统**
访问默认端口 8888:http://localhost:8888
---
## 📦 部署
### 打包
根目录下执行:
```bash
mvn package
```
找到 `target` 文件夹下生成的 jar 文件,Windows 下双击即可运行
### Linux 后台运行示例
```bash
nohup java -jar epay-web-1.0-SNAPSHOT.jar -Xmx1024m &
```
### Docker 部署
```bash
# 构建镜像
docker build -t epay-web .
# 运行容器
docker run -d -p 8088:8088 --name epay epay-web
```
---
## � 版安全特性
- **XSS 防护** - 内置 XSS 过滤器,防止跨站脚本攻击
- **Shiro 认证** - 完善的权限认证体系
- **IP 限流** - 防止恶意刷单,可配置提交间隔
- **Token 验证** - API 接口 Token 鉴权
---
## 📝 版本历史
| 版本 | 更新内容 |
|------|----------|
| v2.0 | 新增支付宝扫码点单模式 |
| v1.9 | 新增支付宝红包支付模式、云闪付支持 |
| v1.8 | 新增银行卡转账模式 |
| v1.7 | 优化支付宝转账码,支持自定义金额 |
| v1.6 | 支付宝转账码功能 |
| v1.5 | 风控解决方案,废弃固码 |
| v1.2 | 多码轮询机制,支持并发支付 |
---
## 🤝 技术疑问交流
- 相关文档:[http://5epay.cn/document.html](http://5epay.cn/document.html)
---
## ⚠️ 免责声明
本项目使用开源MIT协议,可以任意修改和发布,但请遵守相关法律法规,因使用本项目产生的任何问题由使用者自行承担。