Dromara Dax - Pay是一款基于Apache License 2.0协议分发的开源支付网关系统,受中华人民共和国相关法律法规保护和限制。它已对接支付宝、微信支付、云闪付相关接口,可独立部署,为业务系统提供支付接口调用,不影响原有系统架构。
项目仓库:
特色功能
接口统一封装:将各类支付通道接口封装为统一接口,简化业务系统对接多种支付方式的复杂度。
支付通道支持:已对接微信支付、支付宝和云闪付相关接口,后续将支持V3版本接口。
支付相关能力:支持支付、退款、对账、分账等支付相关能力。
调用方式多样:提供HTTP方式接口调用能力和Java版本的SDK,方便业务系统对接。
交易安全保障:接口请求和响应数据支持启用签名机制,保证交易安全可靠。
管理平台便捷:提供管理平台,方便运营人员进行管理和操作,无需IT技术背景即可轻松使用。
演示模块参考:提供聚合支付、电脑收银台和手机收银台的演示模块,供开发者参考实现支付功能的逻辑。
业务系统接入
业务系统想接入支付网关的话,不需要集成到业务系统里,只需要单独部署一份支付系统,然后业务系统通过接口调用即可拥有对应的支付能力, 不会对原业务系统的架构产生影响。如果是Java项目,可以使用SDK简化接入流程, 其他语言可以参照中的说明使用HTTP接口方式接入。
Java客户端SDK
SDK版本号与支付网关的版本保持一致,如果需要使用,请在pom.xml中添加如下依赖。SDK使用方式参考SDK使用说明。
此处以支付接口为例,演示业务系统如何调用支付网关进行支付,其他接口的调用方式类似,具体请参考支付对接。
/** * 统一支付接口 * @author xxm * @since 2024/2/5 */ public class PayOrderTest { @Before public void init() { // 初始化支付配置 DaxPayConfig config = DaxPayConfig.builder() .serviceUrl("http://127.0.0.1:9000") .signSecret("123456") .signType(SignTypeEnum.HMAC_SHA256) .build(); DaxPayKit.initConfig(config); } /** * 支付 */ @Test public void pay() { PayParam param = new PayParam(); param.setClientIp("127.0.0.1"); param.setBizOrderNo("P0004"); param.setTitle("测试接口支付"); param.setChannel(PayChannelEnum.ALI.getCode()); DaxPayResult<PayModel> execute = DaxPayKit.execute(param); System.out.println(JSONUtil.toJsonStr(execute)); } }
收银台演示
驾驶舱
H5收银台演示
支付通道配置
🛣️ 路线图
dev为开发分支,本地运行请使用master或dev分支进行测试,当前正在进行整个系统的优化重构工作,各种功能都会有可能调整, V2.1.0时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容。 请勿在生产环境中使用,请等待生产可用的版本发布。如在使用,需要自己来保证应用的安全
- 支持支付宝和微信V3版本接口
- 支持撤销、转账等更多支付接口
- 增加微信通知、钉钉通知、飞书通知能力
- 支持服务商模式,以及一些间连通道,如通联支付、易宝支付等,更好适应小微收单场景