# pay-code **Repository Path**: Marsfactory/pay-code ## Basic Information - **Project Name**: pay-code - **Description**: 一个基于 Spring Boot 3.0.5 + Vue 3 + Naive UI 的多商户支付管理系统,支持微信支付和支付宝扫码支付,同时提供 UniApp 小程序端支付功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2026-01-27 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 支付管理系统 一个基于 Spring Boot 3.0.5 + Vue 3 + Naive UI 的多商户支付管理系统,支持微信支付和支付宝扫码支付,同时提供 UniApp 小程序端支付功能。 ## 技术栈 ### 后端 - Spring Boot 3.0.5 - MySQL 8.0 - MyBatis-Plus 3.5.3.1 - Spring Security + JWT - 微信支付 SDK 0.2.12 - 支付宝 SDK ### Web 前端 - Vue 3.4 - Vite 5 - Naive UI 2.38 - Pinia - Vue Router 4 - TypeScript ### 小程序端 - UniApp (Vue 3) - 微信小程序 ## 功能特性 ### Web 管理端 - ✅ 用户登录注册 - ✅ 多商户管理 - ✅ 微信扫码支付 (Native Pay) - ✅ 支付宝扫码支付 - ✅ 订单管理 - ✅ 支付配置管理 - ✅ JWT 认证 - ✅ 支付回调处理 ### 小程序端 - ✅ 商品展示(轮播图 + 列表) - ✅ 商品详情 - ✅ 订单确认 - ✅ 微信小程序支付 (JSAPI) - ✅ 支付结果展示 ## 项目结构 ``` pay-code/ ├── backend/ # 后端项目 │ ├── src/main/java/com/pay/ │ │ ├── common/ # 通用类(Result、Constants) │ │ ├── config/ # 配置类(Security、RestTemplate) │ │ ├── controller/ # 控制器 │ │ │ ├── AuthController.java # 认证接口 │ │ │ ├── MerchantController.java # 商户管理 │ │ │ ├── PayController.java # 支付接口 │ │ │ ├── GoodsController.java # 商品接口(小程序用) │ │ │ └── WechatController.java # 微信登录接口 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── exception/ # 异常处理 │ │ ├── mapper/ # MyBatis Mapper │ │ ├── security/ # JWT 过滤器 │ │ └── service/ # 服务层 │ ├── src/main/resources/ │ │ └── application.yml # 配置文件 │ ├── sql/ # SQL 脚本 │ └── pom.xml │ ├── frontend/ # Web 前端项目 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── layouts/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── styles/ # 全局样式 │ │ ├── types/ # TypeScript 类型 │ │ └── views/ # 页面组件 │ ├── package.json │ └── vite.config.ts │ └── uniapp-pay/ # 小程序端项目 ├── pages/ │ ├── index/ # 首页(轮播图 + 商品列表) │ ├── detail/ # 商品详情页 │ ├── order/ # 订单确认页 │ └── result/ # 支付结果页 ├── utils/ │ └── api.js # API 工具 ├── manifest.json # 应用配置 └── pages.json # 页面配置 ``` ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 18+ - MySQL 8.0+ - Maven 3.8+ - HBuilderX(小程序开发) - 微信开发者工具(小程序调试) ### 数据库初始化 1. 创建数据库 `pay_system` 2. 执行初始化脚本: ```bash mysql -u root -p pay_system < backend/sql/init.sql ``` 3. 默认管理员账号: - 用户名:`admin` - 密码:`admin123` ### 后端启动 1. 修改数据库配置 `backend/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/pay_system?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: your_password # 微信小程序配置(小程序支付必填) wechat: miniapp: appid: your_appid secret: your_secret ``` 2. 启动后端服务: ```bash cd backend mvn spring-boot:run ``` 后端服务将在 http://localhost:8080 启动 ### Web 前端启动 1. 安装依赖: ```bash cd frontend npm install ``` 2. 启动开发服务器: ```bash npm run dev ``` 前端服务将在 http://localhost:5173 启动 ### 小程序端启动 1. 使用 HBuilderX 打开 `uniapp-pay` 目录 2. 修改 API 地址 `uniapp-pay/utils/api.js`: ```javascript export const BASE_URL = 'http://your-server-ip:8080' // 替换为后端地址 ``` 3. 修改小程序 AppID `uniapp-pay/manifest.json`: ```json { "mp-weixin": { "appid": "your_appid" } } ``` 4. 运行到微信开发者工具: - 菜单:运行 → 运行到小程序模拟器 → 微信开发者工具 ## API 接口 ### 公开接口(无需认证) | 接口 | 方法 | 说明 | |------|------|------| | `/api/auth/login` | POST | 用户登录 | | `/api/auth/register` | POST | 用户注册 | | `/api/goods/list` | GET | 商品列表 | | `/api/goods/{id}` | GET | 商品详情 | | `/api/wechat/login` | POST | 小程序登录获取openid | | `/api/pay/mp/create` | POST | 小程序支付下单 | | `/api/pay/notify/wechat` | POST | 微信支付回调 | | `/api/pay/notify/alipay` | POST | 支付宝回调 | ### 需认证接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/merchant/**` | - | 商户管理 | | `/api/pay/create` | POST | 创建支付订单 | | `/api/pay/orders` | GET | 订单列表 | 启动后端服务后,访问 http://localhost:8080/doc.html 查看完整 API 文档。 ## 支付配置说明 ### 微信支付配置 #### Native 支付(扫码支付) 1. 登录 [微信支付商户平台](https://pay.weixin.qq.com/) 获取: - 商户号 (mchId) - AppID(公众号/小程序) - APIv3 密钥 - 商户 API 私钥(可直接配置内容或文件路径) - 证书序列号 2. 在 Web 管理端创建商户后,进入支付配置页面填写信息 #### 小程序支付(JSAPI) 1. 在 `application.yml` 配置小程序 AppID 和 Secret: ```yaml wechat: miniapp: appid: wxe97894ad8c7ef7e0 secret: your_secret_here ``` 2. 确保微信支付商户号已关联小程序 AppID ### 支付宝配置 1. 登录 [支付宝开放平台](https://open.alipay.com/) 获取: - AppID - 应用私钥 - 支付宝公钥 2. 在系统中创建商户后,进入支付配置页面填写信息 ## 小程序支付流程 ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 小程序 │ │ 后端服务 │ │ 微信API │ │ 微信支付 │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ 1. uni.login() │ │ │ │──────────────────>│ │ │ │ │ 2. code换openid │ │ │ │──────────────────>│ │ │ │<──────────────────│ │ │ 3. 返回openid │ │ │ │<──────────────────│ │ │ │ │ │ │ │ 4. 创建订单 │ │ │ │──────────────────>│ │ │ │ │ 5. 统一下单 │ │ │ │──────────────────────────────────────>│ │ │<──────────────────────────────────────│ │ 6. 返回支付参数 │ │ │ │<──────────────────│ │ │ │ │ │ │ │ 7. requestPayment│ │ │ │──────────────────────────────────────────────────────────>│ │<──────────────────────────────────────────────────────────│ │ │ │ │ │ │ 8. 支付回调 │ │ │ │<──────────────────────────────────────│ │ │ │ │ │ 9. 查询支付结果 │ │ │ │──────────────────>│ │ │ │<──────────────────│ │ │ │ │ │ │ ``` ## 注意事项 1. **安全配置** - 生产环境请修改 JWT 密钥 - 微信小程序 Secret 不要泄露 - 建议使用 HTTPS 部署 2. **支付回调** - 回调地址需配置为公网可访问的地址 - 建议使用内网穿透工具(如 ngrok)进行本地测试 3. **微信支付证书** - 可配置私钥文件路径或直接配置私钥内容 - 私钥内容配置时包含 `-----BEGIN PRIVATE KEY-----` 头尾 4. **小程序开发** - 开发环境需在微信开发者工具中关闭域名校验 - 生产环境需在小程序后台配置合法域名 ## 常见问题 ### Q: 小程序获取 openid 失败? A: 检查 `application.yml` 中的小程序 AppID 和 Secret 是否正确 ### Q: 支付时提示"商户未配置微信支付"? A: 在 Web 管理端为商户配置微信支付信息 ### Q: 本地开发如何测试支付回调? A: 使用 ngrok 等内网穿透工具,将回调地址配置为穿透后的公网地址 ## License MIT