特色功能
以下为 DaxPay 开源版已实现的核心功能亮点,涵盖支付能力、通道统一封装、支付方式、安全机制与国际化时区。
支付核心能力
DaxPay 覆盖支付交易的完整生命周期:
- 支付 — 统一下单,支持主流支付渠道与多种支付方式
- 退款 — 全额 / 部分退款,支持退款同步与差错处理
- 查询 — 订单状态、交易明细、通道流水查询
- 回调 — 异步通知机制,保证最终一致性
- 同步 — 主动向通道查询订单状态,补偿回调丢失
- 关闭 — 订单超时关闭、网关超时兜底
- 商户通知 — 商户回调消息分发、重试策略、通知任务调度
通道架构:编排与对接分离
DaxPay 的通道体系采用主应用编排 + 子应用对接的分层架构,这是其区别于单体支付系统的核心设计:
| 层级 | 职责 | 实现 |
|---|---|---|
编排层 (主应用 daxpay-channel) | 通道声明、通道路由、支付策略编排、配置数据 CRUD、回调组装 | 不含第三方 SDK |
对接层 (子应用 channel-one / channel-two) | 第三方 SDK 直接调用、签名/验签、通道专属协议适配 | 独立部署 |
主应用通过声明式 HTTP 客户端 (@HttpExchange) 调用子应用,链路全程 AES-GCM 传输加密,响应统一 {code, msg, data} 契约。这样设计的收益:
- SDK 依赖隔离 — 第三方 SDK 不污染主应用,避免版本冲突
- 独立升级 — 子应用可按通道单独发版,不影响主链路
- 弹性伸缩 — 高频通道(支付宝、微信)可多实例独立扩缩容
- 双语言实现 — 通道子应用同时提供 Java (Spring Boot) 与 Go (Gin) 两套对等实现,按需选用
通道总数与分布
DaxPay 已对接 12 个国内支付通道模块,涵盖直连与聚合两类:
- 直连通道 (
channel-one) — 支付宝、微信、抖音、银联商务 - 聚合通道 (
channel-two) — 拉卡拉、海科融通、斗拱 (汇付天下)、乐刷、随行付、河马付 (杉德)、Adapay、富友,以及易宝 (待启用)
此外 ChannelEnum 还预定义了银联、盛付通、银盛、快钱、杉德 等通道枚举,可按需扩展对接。新增通道只需在对应子应用实现 SDK 调用并在主应用注册策略。
支付方式
覆盖主流支付场景:
- 聚合支付 — 一码多付,自动路由到用户钱包
- 扫码支付 — 主扫、被扫
- JSAPI 支付 — 微信 / 支付宝 / 抖音公众号、小程序内调起
- H5 支付 — 手机浏览器调起钱包
- APP 支付 — 原生 SDK 拉起
- 小程序支付 — 微信 / 支付宝 / 抖音
- 付款码支付 — 商户扫用户动态码
- 抖音支付 — 扫码 / JSAPI / H5 / APP
- 境外卡支付 — Visa / MasterCard 网关与刷卡 (预留)
多商户与多端管理
- 双入口架构 — 运营端 (平台运营方使用) 与商户端 (商户自助使用) 同源编译,菜单与数据按
client_code隔离 - 多应用管理 — 单商户可配置多个支付应用,独立凭证与回调地址
- 行级数据隔离 — 每个商户的数据通过商户编号自动隔离,彼此互不可见
通道路由与风控
- 动态路由 — 按支付产品、通道可用性、成本策略动态匹配最优通道
- 产品策略 —
ProductStrategySupport策略模式,支持按支付方式 (扫码/JSAPI/...) 选路 - 环境一致性校验 — 路由层兜底校验商户环境与产品当前环境 (沙箱/生产) 一致
- 风控插件 —
daxpay-plugin-risk黑名单 + 命中记录,支持交易前风险检查
安全机制
DaxPay 在接口、传输、存储、认证多个层面构建安全防护:
- 签名防篡改 — 接口请求与响应支持 RSA 签名
- 字段级加密 — 敏感字段 AES-256-GCM 加密存储
- 传输加密 — 主应用与通道子应用之间全程 AES-GCM 加密
- 权限认证 — Sa-Token (token name:
Accesstoken),RBAC 角色权限码 + 菜单数据隔离 - 两步验证 — TOTP 一次性密码 + 备份码,支持 Google Authenticator
- 社交登录 — 微信 / 支付宝 / 抖音开放平台扫码登录
- 沙箱 / 生产隔离 — 部署级隔离,
sandbox-enabled=false时启动期强制重置所有产品为生产环境
国际化与时区
- 10 语种支持 — 简体中文、英文、繁体中文 (台 / 港)、日文、韩文,以及东盟四语 (印尼 / 越南 / 泰 / 马来)
- JSON 资源源 — 自定义
JsonMessageSource,按 locale 目录 + 业务模块拆分,枚举翻译通过I18nSupport接口驱动 - 时区统一 — 数据库时间字段统一
timestamptz(6),实体统一OffsetDateTime,UTC 存储 - 回退链 — 当前 locale →
zh-CN→ 语言码,缺 key 自动回退
全端覆盖
| 端 | 应用 | 技术栈 |
|---|---|---|
| 运营 Web | daxpay-admin | Vue 3.5 · Vite 8 · antdv-next · Vben Admin 5 |
| 商户 Web | daxpay-merchant | 同上,同源编译 |
| 移动 H5 | dax-pay-h5 | Vue 3.5 · Vant 4 · UnoCSS (PC + Mobile 双端) |
| 运营端应用(小程序) | dax-pay-app-admin | uni-app · wot-ui v2 (H5 / 微信 / 支付宝 / 抖音 / App) |
| 商户端应用(小程序) | 规划中(参照 dax-pay-app-admin) | uni-app · wot-ui v2 |
| 收银小程序 | dax-pay-cashier | uni-app · wot-ui v2 (微信 / 支付宝 / 抖音) |
可观测性与运维
- 链路追踪 — OpenTelemetry 集成,日志关联 traceId (不导出 OTLP,仅本地关联)
- 审计日志 —
capability-audit-log关键操作审计,支持 IP 定位 (ip2region) - 站内通知 — 公告、个人消息、SSE 实时推送
- Docker 部署 — 官方镜像与 Compose 编排,一键启动
- 优雅停机 — 生产环境配置 graceful shutdown