当前位置: 欣欣网 > 码农

地表最强免费开源的支付网关

2024-03-17码农

Dromara Dax-Pay(开源支付系统)

❗使用须知

DaxPay 是一款基于 Apache License 2.0 协议分发的开源软件,受中华人民共和国相关法律法规的保护和限制,可以在符合【用户授权使用协议】和 【Apache License 2.0】开源协议情况下进行免费使用、学习和交流。 在使用前请阅读上述协议,如果不同意请勿进行使用。

🍈项目介绍

DaxPay是一套基于Bootx-Platform脚手架构建的开源支付网关系统,已经对接支付宝、微信支付相关的接口,以及扩展了钱包支付、储值卡支付、现金支付等新的支付方式。可以独立部署,提供接口供业务系统进行调用,不对原有系统产生影响

🧭 特色功能

  • 封装各类支付通道的接口为统一的接口,方便业务系统进行调用,简化对接多种支付方式的复杂度

  • 已对接 微信支付 支付宝 相关的接口,目前已经支持 V2 版本的接口,后续版本将支持 V3 版本的接口

  • 支持组合支付,满足用户系统需要多种方式同时进行支付的场景。

  • 提供 HTTP 方式接口调用能力,和 Java 版本的 SDK ,方便业务系统进行对接

  • 接口请求和响应数据支持启用签名机制,可根据实际需要进行开关,保证交易安全可靠

  • 提供管理平台,方便运营人员进行管理和操作,不需要懂IT技术也可以轻松使用

  • 提供 聚合支付 电脑收银台 手机收银台 的演示模块,供开发者参考其实现支付功能的逻辑

  • 🥞 核心技术栈

    名称 描述 版本要求
    Jdk Java环境 1.8+,11版本可以正常使用,但17+版本暂不支持
    Spring Boot 开发框架 2.7.x
    Redis 分布式缓存 5.x版本及以上
    MySQL 数据库 基于5.7.X版本开发,基本支持8.x版本
    Vue 前端框架 3.x
    IJpay 支付SDK开发包 项目自动管理,不需要额外处理

    🛠️ 业务系统接入

    业务系统想接入支付网关的话,不需要集成到业务系统里,只需要单独部署一份支付系统,然后业务系统通过接口调用即可拥有对应的支付能力, 不会对原业务系统的架构产生影响。如果是Java项目,可以使用SDK简化接入流程, 其他语言可以参照中的说明使用HTTP接口方式接入。

    Java客户端SDK

    SDK版本号与支付网关的版本保持一致,如果需要使用,请在pom.xml中添加如下依赖。SDK使用方式参考SDK使用说明。

    <!-- 支付SDK -->
    <dependency>
    <groupId>cn.bootx.platform</groupId>
    <artifactId>daxpay-single-sdk</artifactId>
    <version>${latest.version}</version>
    </dependency>

    SDK调用示例

    此处以简单支付接口为例,演示业务系统如何调用支付网关进行支付,其他接口的调用方式类似,具体请参考支付对接。

    packagecn.bootx.platform.daxpay.sdk;

    importcn.bootx.platform.daxpay.sdk.code.PayChannelEnum;
    importcn.bootx.platform.daxpay.sdk.code.PayWayEnum;
    importcn.bootx.platform.daxpay.sdk.model.PayOrderModel;
    importcn.bootx.platform.daxpay.sdk.net.DaxPayConfig;
    importcn.bootx.platform.daxpay.sdk.net.DaxPayKit;
    importcn.bootx.platform.daxpay.sdk.param.pay.SimplePayParam;
    importcn.bootx.platform.daxpay.sdk.response.DaxPayResult;
    importorg.junit.Before;
    importorg.junit.Test;

    /**
    * 简单支付
    * @author xxm
    * @since 2024/2/2
    */
    public classSimplePayOrderTest{

    @Before
    publicvoidinit(){
    // 初始化支付配置
    DaxPayConfigconfig=DaxPayConfig.builder()
    .serviceUrl("http://127.0.0.1:9000")
    // 需要跟网关中配置一致
    .signSecret("123456")
    .signType(SignTypeEnum.HMAC_SHA256)
    .build();
    DaxPayKit.initConfig(config);
    }

    @Test
    publicvoidsimplePay(){
    // 简单支付参数
    SimplePayParamparam=newSimplePayParam();
    param.setBusinessNo("P0001");
    param.setAmount(1);
    param.setTitle("测试支付宝支付");
    param.setChannel(PayChannelEnum.ALI.getCode());
    param.setPayWay(PayWayEnum.QRCODE.getCode());

    DaxPayResult<PayOrderModel>execute=DaxPayKit.execute(param,true);
    System.out.println(execute);
    PayOrderModeldata=execute.getData();
    System.out.println(data);
    }
    }

    🍎 系统截图

    H5收银台演示

    支付演示

    收银台演示

    支付通道配置

    🛣️ 路线图

    当前处于功能开发阶段,部分功能可能会有调整, V2.1.0 时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容

    开发进度和任务池

    更新记录

    2.0.X版本:

  • 对账比对功能实现

  • 支持转账、分账操作

  • 云闪付支付支持

  • 支付宝和微信增加V3版本接口支持

  • 消息通知支持消息中间件模式

  • 2.1.X版本:

  • 增加账户金额表

  • 增加统计管理

  • 支持微信消息通知

  • 支持钉钉消息通知

  • 新增支付单预警功能, 处理支付单与网关状态不一致且无法自动修复的情况

  • 欢迎关注本公众账号,回复数字3,查看相关源代码