Skip to content

常见问题

更新时间:2026/7/26 16:29:53

汇总 DaxPay 使用、部署、二次开发中高频出现的疑问。未覆盖的问题可至 GitHub Issues交流群 反馈。

基础概念

DaxPay 是什么

DaxPay 是一款开源支付系统,提供支付、退款、查询、回调等支付核心能力,将支付宝、微信、银联等多种支付通道封装为统一的 HTTP 接口,业务系统只需对接一套标准协议即可接入多种支付方式。详见 项目介绍

开源版和商业版有什么区别

开源版(本项目)交付完整的支付核心链路与多端管理界面,基于 LGPL v3.0 协议开源。

商业版(dax-pay-plus)在开源版基础上扩展:

  • 更多聚合通道 — 20+ 渠道子模块
  • 分账与结算国际支付通道等增强能力

分账结算为商业版能力,不在开源版交付范围内

LGPL v3.0 协议可以商用吗

可以。LGPL v3.0 允许商业使用。你的业务系统可以通过接口调用或动态链接方式使用 DaxPay,无需开源你的业务代码。详见 开源协议

部署运行

后端编译必须用 mvnd 吗

项目约定使用 mvnd(Maven Daemon)加速编译。普通 mvn 也能编译,但 mvnd 自带守护进程,增量编译速度显著更快,推荐使用。

Apache Artemis 能否替换为其他消息队列

当前版本强依赖 Artemis(用于支付延时通知等 JMS 场景),不支持直接替换为 RabbitMQ / Kafka。如需替换需自行改造消息中间件适配层。

支持哪些数据库

仅支持 PostgreSQL 14+。时间字段统一使用 timestamptz(6),实体类使用 OffsetDateTime,不支持 MySQL / Oracle 等。

容器化部署最低配置

建议最低 2 核 4G(含 PostgreSQL / Redis / Artemis / 主应用 / 通道子应用全部容器化)。生产环境建议 4 核 8G 起步,并根据交易量水平扩展通道子应用实例。

PowerShell 下 mvnd 编译参数报错

PowerShell 下含 =-D 参数会被空格拆分,必须加引号:

powershell
# 错误 — 会被拆分
mvnd compile -Dmaven.test.skip=true

# 正确 — 加引号
mvnd compile "-Dmaven.test.skip=true"

详见 项目构建

通道对接

开源版已支持哪些支付通道

已对接 12 个国内支付通道:

  • 直连通道(channel-one)— 支付宝、微信、抖音、银联商务
  • 聚合通道(channel-two)— 拉卡拉、海科融通、斗拱(汇付天下)、乐刷、随行付、河马付(杉德)、Adapay、富友

详见 特色功能 - 通道总数与分布

如何新增一个支付通道

  1. 在对应通道子应用(直连走 channel-one,聚合走 channel-two)的 daxpay-channel-impl 下实现 SDK 调用与签名/验签
  2. 在主应用 daxpay-channel 注册通道策略与配置数据 CRUD
  3. ChannelEnum 补充通道枚举

新增通道只需实现 SDK 调用并注册策略,不影响主链路。

channel-one 和 channel-two 有什么区别

两者架构完全相同,区别在于承载的通道集合:

  • channel-one — 对接支付宝、微信等直连通道(官方 SDK)
  • channel-two — 对接拉卡拉、富友等聚合通道(聚合 SDK)

主应用通过 daxpay.channel.one.base-url / daxpay.channel.two.base-url 路由,子应用编号固定不可改名。

通道子应用的 Java 版和 Go 版怎么选

channel-one 同时提供 Java(Spring Boot)与 Go(Gin)两套完全对等的实现,端口、路由、响应契约一致:

  • Java 版 — 生态完整,通道官方 SDK 现成,适合快速对接
  • Go 版 — 更高吞吐、更低内存占用,全部自研 HTTP 签名对接(无第三方 SDK)

按团队技术栈与性能诉求选用,两者二选一,端口冲突不可同时启动

通道子应用必须独立部署吗

是的。通道子应用独立部署是 DaxPay 的核心设计 —— 将第三方 SDK 隔离到子应用,避免 SDK 依赖污染主应用,支持独立升级与弹性伸缩。主应用通过 @HttpExchange 声明式 HTTP 客户端调用子应用,链路 AES-GCM 加密。

功能边界

是否支持分账 / 提现

分账与结算是后续规划能力,当前开源版尚未实现。提现(代付)同理。这些属于商业版的增强方向。

是否支持国际支付(PayPal / Stripe)

国际支付通道(PayPal / Stripe 等)为后续规划,当前开源版聚焦国内支付通道。预留了 境外卡支付 枚举与扩展点。

沙箱环境怎么用

DaxPay 采用部署级沙箱隔离:

  • 测试 / 开发环境配置 daxpay.platform.config.sandbox-enabled=true,允许沙箱联调
  • 生产环境必须配置 sandbox-enabled=false,启动时会强制将所有 activeEnv=sandbox 的产品重置为 prod,保证生产数据纯净

生产环境隔离

沙箱联调请走独立的测试环境部署,生产数据库严禁从测试环境导入数据。详见 配置说明

是否支持多商户 / 多商户隔离

支持。DaxPay 原生支持多商户模式:

  • 运营端 + 商户端双入口,数据行级隔离(商户编号自动隔离)
  • 单商户可配置多个支付应用,独立凭证与回调地址

二次开发

能否修改源码用于自己的项目

可以。基于 LGPL v3.0,你可以自由修改、使用源码。若你修改了 DaxPay 库本身(而非通过接口调用),需以 LGPL 协议开源你的修改;若仅通过接口调用或动态链接,你的业务代码无需开源。

前端如何对接后端接口

前端通过 RESTful HTTP 接口对接主应用(端口 9999),接口请求 / 响应支持 RSA 签名防篡改,认证基于 Sa-Token(token name: Accesstoken)。详细接入方式见 接口文档

如何新增一种界面语言(i18n)

  • 后端 — 资源文件在 common-i18n/src/main/resources/i18n/{locale}/,按业务模块拆分,新增语种需同步维护 zh-CN / en-US / zh-TW / zh-HK / ja-JP / ko-KR
  • 前端(Web/H5) — 10 语种,新增 key 需全语种同步
  • 小程序 — 仅中英(小程序端条件编译剔除繁体 / 日韩 / 东盟)

详见各端 i18n 规范。

数据库表结构在哪?如何初始化

SQL 脚本位于 dax-pay-open/_config/sql/,全新安装顺序为 tables.sql(建表)→ datas.sql(初始数据)。仓内另提供升级脚本 update-tables.sqlupdate-datas.sql 与菜单种子 iam_perm_menu.sql

注意

全量 tables.sql / datas.sql 不在仓库内(体积大),需从飞书安装包或历史版本获取。仓内 README.md 有说明。


未找到答案?欢迎到 GitHub Issues 提问或加入 交流群 讨论。

基于 GNU LGPL v3.0 协议开源