应用介绍
DaxPay 由多个独立 git 仓库的子项目协同构成,主应用通过 HTTP 调用各独立通道子服务,前端多端通过 RESTful 接入主应用。下面分别介绍各应用。
主应用 dax-pay-open
支付核心后端,承载支付业务、通道路由编排、风控与系统管理。
| 模块 | 职责 |
|---|---|
daxpay-platform | 基础层 — 通用契约 / 技术设施 / 平台能力 / 业务服务 |
daxpay-payment | 支付业务 — 领域内核 / 运营与商户端 / 统一收单 / 双移动端 |
daxpay-channel | 通道业务 — 20+ 通道能力的编排层 (路由/策略/配置 CRUD,不含 SDK) |
daxpay-plugin | 支付插件 — 易支付协议、风控黑名单 |
daxpay-demo | 功能演示模块 |
daxpay-start | 启动入口 |
技术栈: Java 25 · Spring Boot 4.1.1 · PostgreSQL 14+ · Redis 7+ · Apache Artemis · MyBatis-Plus 3.5 · Sa-Token 1.46 · SpringDoc 3.0 · MapStruct 1.6 · Hutool 5.8 · Caffeine 3.2 · BouncyCastle 1.84
端口: 9999
启动:
cd dax-pay-open/daxpay-start
mvnd spring-boot:run -Dspring-boot.run.profiles=dev通道子应用 dax-pay-channel-one
对接支付宝、微信、抖音、银联商务、银联(云闪付)等直连通道的独立部署微服务,承载第三方 SDK 的直接调用。
| 模块 | 说明 |
|---|---|
daxpay-platform | 基础层 — core + common (util/json/i18n) + service-system |
daxpay-channel-impl | 通道实现 — alipay / wechat / douyin / ums / union 五个子模块 |
daxpay-channel-start | 启动入口 |
SDK 版本: alipay-sdk 4.40.272.ALL · weixin-java-pay (wxjava) 4.8.4.B · douyinpay 1.0.6 · UMS 自研 HTTP 对接 · 银联(云闪付)自研 HTTP + RSA2 证书签名
与主应用通信 — 主应用通过 @HttpExchange 声明式客户端调用,链路 AES-GCM 加密,响应统一 {code, msg, data}
端口: 20100
通道子应用 dax-pay-channel-two
对接聚合通道的独立部署微服务,与 channel-one 架构完全相同,区别在于承载的通道集合。
| 模块 | 说明 |
|---|---|
daxpay-platform | 基础层 (与 channel-one 同构) |
daxpay-channel-impl | 通道实现 — 九个聚合通道子模块 (清单见下方已对接通道) |
daxpay-channel-start | 启动入口 |
已对接通道 — 拉卡拉、海科融通、斗拱 (汇付天下)、乐刷、随行付、河马付 (杉德)、Adapay、富友、易宝(九通道均已实现并启用)
SDK 版本 — 各聚合通道 SDK + yeepay 4.4.15
端口: 20200
通道子应用 dax-pay-channel-three
对接国际支付通道的独立部署微服务,架构与 channel-one 完全相同,区别在于承载的通道集合。
| 模块 | 说明 |
|---|---|
daxpay-platform | 基础层 (与 channel-one 同构) |
daxpay-channel-impl | 通道实现 — stripe 子模块 |
daxpay-channel-start | 启动入口 |
SDK 版本 — stripe-java 29.2.0
与主应用通信 — 同 channel-one,链路 AES-GCM 加密,主应用经 daxpay.channel.three 路由调用
端口: 20300
Go 实验副本
dax-pay-channel-one-go 与 dax-pay-channel-two-go 分别是 channel-one / channel-two 的 Go (Gin) 实现,属实验副本:实验性质,不在主线支持范围与文档主流程内,生产部署请使用 Java 版。
- 端口与 Java 版完全重叠 (20100 / 20200),二选一,勿同时启动
- 不依赖第三方 SDK,全部自研 HTTP 签名对接;已实现通道以各仓库 README 为准
- 构建方式:
go build ./cmd/server/,配置读取configs/config.yaml
Web 管理端 dax-pay-ui
管理后台前端,基于 Vue Vben Admin 5 二次开发的 monorepo,同源编译出运营端与商户端两个独立应用。
| 子应用 | 定位 | dev 端口 | VITE_APP_CLIENT_CODE |
|---|---|---|---|
apps/daxpay-admin | 运营 (管理) 端 — 平台运营方使用 | 6999 | admin |
apps/daxpay-merchant | 商户端 — 商户自助使用 | 7999 | merchant |
两端共用 packages/ 下的框架包 (@core / effects / locales / stores / utils 等) 与 packages/business/ui-biz 业务组件库,通过菜单 client_code 与权限码实现端级隔离。
dax-pay-ui/
├── apps/
│ ├── daxpay-admin/ # 运营端应用
│ └── daxpay-merchant/ # 商户端应用
├── packages/ # 核心包 (@core / effects / business / locales ...)
├── internal/ # 内部工具 (lint / tsconfig / vite-config)
└── scripts/ # 脚本 (deploy / turbo-run / vsh)技术栈 — Vue 3.5 · Vite 8 · TypeScript 5.9 · antdv-next · vxe-table 4 · Vben Admin 5 · TailwindCSS 4 · vue-i18n 11 · pnpm 10 + Turbo 2.9
国际化 — 10 语种 (中日韩 + 东盟四语 + 繁体台港),框架层与应用层消息合并加载
启动:
pnpm run dev:admin # 运营端 6999
pnpm run dev:merchant # 商户端 7999移动 H5 端 dax-pay-h5
移动端网关应用,单应用同时承载 PC 与移动两套完全独立的页面,由入口设备探测分发。
- 设备探测 —
index.html在 Vue 挂载前写入window.__DEVICE__('pc' | 'mobile'),零闪烁 - 目录分离 — 移动端代码在
src/mobile/,PC 端在src/pc/,公共代码在src/shared/ - 移动适配 —
postcss-mobile-forever做 vw 适配;PC 源码被排除出 vw 转换,使用原生 px + 媒体查询 - 路由三桶 — 真实路由 / 对端独占存根 / catch-all 404,单一 URL 空间两端各自解析
技术栈 — Vue 3.5 · Vite 8 · Vue Router 5 · Vant 4 (移动端) · UnoCSS 66 · Pinia 3 · vue-i18n 11
端口 (dev): 9500
国际化 — 10 语种
启动: pnpm run dev
运营端跨端应用 dax-pay-app-admin
面向平台运营方的管理类 uni-app 应用,基于 unibest 4 (uni-app + Vue 3) 二次开发,一次开发多端编译。对应 Web 运营端 (apps/daxpay-admin),调用 /app-admin/ 接口管理商户、门店、用户、应用等资源。
| 维度 | 实现 |
|---|---|
| UI 库 | @wot-ui/ui (wot-ui v2,组件前缀 wd-*) |
| 列表 | z-paging |
| 样式 | UnoCSS (carbon 图标集) |
| 国际化 | vue-i18n |
编译目标 — H5 / 微信小程序 / 支付宝小程序 / 抖音小程序 / App (Android / iOS)
页面结构 — tabBar 三项 (工作台 / 应用 / 我的) + 商户管理子包 (pages-merchant) + 支付配置子包 (pages-payment) + 系统设置子包 (pages-system)
国际化 — 全端 10 语种;小程序端条件编译仅中英 (繁体/日韩/东盟仅 H5 与 App 打入)
启动与构建:详见跨端应用。
商户端跨端应用 dax-pay-app-merchant
面向商户自助的管理类 uni-app 应用,与 dax-pay-app-admin (运营端) 对标,技术栈一致 (unibest 4 + wot-ui v2)。商户通过它管理自己的订单、门店、用户、应用与支付配置。
| 维度 | 实现 |
|---|---|
| UI 库 | @wot-ui/ui (wot-ui v2,组件前缀 wd-*) |
| 列表 | z-paging |
| 样式 | UnoCSS (carbon 图标集) |
| 国际化 | vue-i18n |
编译目标 — H5 / 微信小程序 / 支付宝小程序 / 抖音小程序 / App (Android / iOS)
页面结构 — tabBar 三项 (工作台 / 应用 / 我的) + 认证子包 + 协议页 (隐私政策 / 用户协议)
启动与构建:详见跨端应用。
收银小程序 dax-pay-mini-cashier
面向最终消费者的收银类小程序,技术栈与 dax-pay-app-admin 一致,但定位极简收银。
| 维度 | 实现 |
|---|---|
| 编译端 | 微信小程序 / 支付宝小程序 / 抖音小程序 (无 App / H5) |
| 页面 | 首页 / 认证 / 支付 / 结果 (4 页,全自定义导航) |
| 子包 | 无 (极简) |
| 国际化 | 仅中英 |
与 dax-pay-app-admin 的差异 — 后者是功能完整的运营端管理应用 (30+ 页面);前者是面向最终消费者的极简收银台,无 tabBar、无子包、依赖精简。
启动: pnpm run dev:mp-weixin (默认微信小程序)