特色功能
以下为 DaxPay 开源版已实现的核心功能亮点,涵盖支付能力、通道统一封装、支付方式、安全机制与国际化时区。
支付核心能力
DaxPay 覆盖支付交易的完整生命周期:
- 支付 — 统一下单,支持主流支付渠道与多种支付方式
- 退款 — 全额 / 部分退款,支持退款同步与差错处理
- 转账 — 支付宝 / 微信 / 抖音直连商户转账打款,转账场景与发起应用配置,微信确认收款链接
- 分账 — 分账订单,开放 API 发起分账 / 查询 / 同步,分账接收方绑定管理
- 查询 — 订单状态、交易明细、通道流水查询
- 回调 — 支付结果异步通知到业务系统,无需轮询等待
- 同步 — 主动向通道查询订单状态,补偿回调丢失
- 关闭 — 订单超时关闭、网关超时兜底
- 商户通知 — 商户回调消息分发、重试策略、通知任务调度
- 易支付协议兼容 — 内置 EasyPay 通用商户接入模块,兼容主流易支付协议,V1 (MD5) 存量兼容 / V2 (RSA) 推荐,小微商户与个人开发者可快速接入
通道架构:编排与对接分离
DaxPay 的通道体系采用主应用编排 + 子应用对接的分层架构,这是其区别于单体支付系统的核心设计:
| 层级 | 职责 | 实现 |
|---|---|---|
编排层 (主应用 daxpay-channel) | 通道声明、通道路由、支付策略编排、配置数据 CRUD、回调组装 | 不含第三方 SDK |
对接层 (子应用 channel-one / channel-two / channel-three) | 第三方 SDK 直接调用、签名/验签、通道专属协议适配 | 独立部署 |
主应用与子应用之间通过内部 HTTP 接口通信,链路全程 AES-GCM 传输加密,返回格式统一。这样设计的收益:
- SDK 依赖隔离 — 第三方 SDK 不污染主应用,避免版本冲突
- 独立升级 — 子应用可按通道单独发版,不影响主链路
- 弹性伸缩 — 高频通道(支付宝、微信)可多实例独立扩缩容
- 双语言实现 — channel-one / channel-two 提供 Java (Spring Boot) 与 Go (Gin) 两套对等实现,按需选用
通道总数与分布
DaxPay 已形成 20+ 支付通道能力口径,涵盖直连、聚合与国际三类;具体可用范围以对应扩展包、交付版本和许可证说明为准:
- 直连通道 (
channel-one) — 支付宝、微信、抖音、银联商务、银联(云闪付) - 聚合通道 (
channel-two) — 拉卡拉、海科融通、斗拱 (汇付天下)、乐刷、随行付、河马付 (杉德)、Adapay、富友、易宝等,通过通道扩展包按版本提供 - 国际通道 (
channel-three) — Stripe 等国际通道,通过对应通道扩展包按版本提供
支付方式
覆盖主流支付场景:
- 聚合支付 — 一码多付,自动路由到用户钱包
- 扫码支付 — 主扫、被扫
- JSAPI 支付 — 微信 / 支付宝 / 抖音公众号、小程序内调起
- H5 支付 — 手机浏览器调起钱包
- APP 支付 — 原生 SDK 拉起
- 小程序支付 — 微信 / 支付宝 / 抖音
- 付款码支付 — 商户扫用户动态码
- 抖音支付 — 扫码 / JSAPI / H5 / APP
- 境外卡支付 — Visa / MasterCard 等国际卡,Stripe Checkout 与 Stripe.js Elements 两种模式
多商户与多端管理
- 双入口架构 — 运营端 (平台运营方使用) 与商户端 (商户自助使用),同一套代码编译出两个独立入口,菜单与数据完全隔离
- 多应用管理 — 单商户可配置多个支付应用,独立凭证与回调地址
- 行级数据隔离 — 每个商户的数据通过商户编号自动隔离,彼此互不可见
通道路由与风控
- 动态路由 — 按支付产品、支付方式、支付应用等条件动态匹配最终通道
- 产品策略 — 按支付方式 (扫码 / JSAPI 等) 自动匹配对应的支付流程
- 环境一致性校验 — 路由层兜底校验商户环境与产品当前环境 (沙箱/生产) 一致
- 基础风险检查 —
daxpay-plugin-risk提供 IP 黑名单、海外 IP 拦截、省/市地区名单、支付前风险校验与命中记录;用户标识黑名单、门店地理围栏、支付后补录等增强能力不属于开源版默认范围
安全机制
DaxPay 在接口、传输、存储、认证多个层面构建安全防护:
- 签名防篡改 — 接口请求与响应支持 RSA 签名
- 字段级加密 — 敏感字段 AES-256-GCM 加密存储
- 传输加密 — 主应用与通道子应用之间全程 AES-GCM 加密
- 权限认证 — 基于 Sa-Token 与 RBAC 的角色权限控制,菜单与数据按角色隔离
- 两步验证 — TOTP 一次性密码 + 备份码,支持 Google Authenticator
- 社交登录 — 微信 / 支付宝 / 抖音开放平台扫码登录
- 沙箱 / 生产隔离 — 通过部署开关彻底区分环境;生产部署启动时会自动把残留的沙箱配置重置为生产,杜绝测试数据混入
国际化与时区
- 10 语种支持 — 覆盖简体中文、繁体中文 (台湾 / 香港)、英文、日文、韩文,以及印尼、越南、泰国、马来四种东南亚语言;管理后台与商户端均可随时切换
- 时区统一 — 所有交易时间按国际标准时间 (UTC) 统一存储,页面展示时自动换算成用户所在时区,不同国家的运营方与商户看到的都是自己的本地时间
- 翻译容错 — 个别语种暂时缺失的文案会自动回退显示简体中文,不会出现空白页或裸露的翻译键
全端覆盖
| 终端 | 应用 | 技术栈 |
|---|---|---|
| 运营 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-merchant | uni-app · wot-ui v2 (H5 / 微信 / 支付宝 / 抖音 / App) |
| 收银小程序 | dax-pay-mini-cashier | uni-app · wot-ui v2 (微信 / 支付宝 / 抖音) |
可观测性与运维
- 链路追踪 — 集成 OpenTelemetry,一次请求的全部日志携带同一追踪 ID,跨服务排查一键串联
- 审计日志 — 关键操作全量留痕,记录操作人、时间、IP 及其归属地
- 站内通知 — 公告、个人消息、SSE 实时推送
- 一键部署 — 运维面板单文件程序,向导式完成安装、构建、部署与日常运维
- 优雅停机 — 发布或重启时先处理完存量请求再下线,不打断进行中的交易