DaxPay:一款开源免费的支付系统

DaxPay是一款专注于为企业和个人提供便捷支付服务的免费开源平台。它支持多种主流支付渠道,如支付宝、微-信支付、云闪付等,并提供了收单、退款、聚合支付、对账、分账等一系列完整的支付功能。

通过HTTP接口调用的方式,DaxPay确保了与现有系统的低耦合度,便于快速集成和部署。同时,它还配备了一个直观的管理界面,方便运营人员进行日常管理和操作。

DaxPay:一款开源免费的支付系统

特点

  • 统一接口:将不同支付通道的API封装为一个标准化接口,极大地方便了业务系统的调用,减少了对接多个支付方式带来的复杂性。
  • 多通道支持:不仅预集成了常见的支付方式,还允许以扩展包的形式轻松添加新的支付通道。
  • 多应用配置:能够同时处理来自多个支付通道账户的请求,满足大型企业或集团内多个子系统的需求。
  • 丰富的功能覆盖:涵盖支付、退款、对账、分账等所有必要的支付相关能力。
  • 安-全可靠:接口请求和响应数据均支持签名机制,保障交易的安-全性。
  • 易于集成:除了HTTP接口外,还提供了Java SDK,进一步简化了接入流程。

技术架构

名称描述版本要求
JDKJava运行环境21+
Spring Boot开发框架3.3.x
Redis分布式缓存5.x及以上
MySQL/Postgresql数据库MySQL8.x及以上/Postgresql 10及以上
Vue前端框架3.x

部署方式

DaxPay的设计理念是尽量减少对原有业务系统的干扰。因此,用户只需单独部署DaxPay服务端,然后通过HTTP接口或Java SDK将其集成到自己的业务逻辑中即可。对于非Java项目,也可以直接使用HTTP API完成对接。

Java客户端SDK

为了方便Java项目的集成,DaxPay提供了专门的SDK。只需在pom.xml中添加以下依赖项:

<dependency>
    <groupId>org.dromara.daxpay</groupId>
    <artifactId>daxpay-single-sdk</artifactId>
    <version>${latest.version}</version>
</dependency>

SDK调用示例

下面是一个简单的支付订单创建示例:

package org.dromara.daxpay.single.sdk.test.trade;

import org.dromara.daxpay.single.sdk.code.ChannelEnum;
import org.dromara.daxpay.single.sdk.code.PayMethodEnum;
import org.dromara.daxpay.single.sdk.code.SignTypeEnum;
import org.dromara.daxpay.single.sdk.model.trade.pay.PayResultModel;
import org.dromara.daxpay.single.sdk.net.DaxPayConfig;
import org.dromara.daxpay.single.sdk.net.DaxPayKit;
import org.dromara.daxpay.single.sdk.param.channel.AlipayParam;
import org.dromara.daxpay.single.sdk.param.channel.WechatPayParam;
import org.dromara.daxpay.single.sdk.param.trade.pay.PayParam;
import org.dromara.daxpay.single.sdk.response.DaxPayResult;
import org.dromara.daxpay.single.sdk.util.JsonUtil;
import org.dromara.daxpay.single.sdk.util.PaySignUtil;
import org.junit.Before;
import org.junit.Test;

import java.math.BigDecimal;

public class PayOrderTest {

    @Before
    public void init() {
        // 初始化支付配置
        DaxPayConfig config = DaxPayConfig.builder()
                .serviceUrl("http://127.0.0.1:9999")
                .signSecret("123456")
                .appId("123")
                .signType(SignTypeEnum.HMAC_SHA256)
                .build();
        DaxPayKit.initConfig(config);
    }

    @Test
    public void wxQrPay() {
        PayParam param = new PayParam();
        param.setClientIp("127.0.0.1");
        param.setBizOrderNo("SDK_" + System.currentTimeMillis());
        param.setTitle("测试微-信扫码支付");
        param.setDescription("这是支付备注");
        param.setAmount(BigDecimal.valueOf(1.00));
        param.setChannel(ChannelEnum.WECHAT.getCode());
        param.setMethod(PayMethodEnum.QRCODE.getCode());
        param.setAttach("{回调参数}");
        param.setAllocation(false);
        param.setReturnUrl("https://abc.com/returnurl");
        param.setNotifyUrl("http://127.0.0.1:10880/test/callback/notify");

        DaxPayResult<PayResultModel> execute = DaxPayKit.execute(param);
        System.out.println(JsonUtil.toJsonStr(execute));
        System.out.println(PaySignUtil.hmacSha256Sign(execute, "123456"));
    }
}

基础环境搭建

数据库

  1. 启动MySQL或Postgresql实例。
  2. 在数据库中创建名为dax-pay的新库,确保字符集为utf8mb4(MySQL)或UTF8(Postgresql)。
  3. _config/sql/dax-pay.sql脚本导入新创建的数据库中。

Redis

启动Redis服务,并记录下连接信息以便后续配置。

项目下载

后端

仓库: git clone https://gitee.com/dromara/dax-pay

PC前端

仓库: git clone https://gitee.com/bootx/dax-pay-ui.git

H5前端

仓库: git clone https://gitee.com/bootx/dax-pay-h5.git

原创文章,作者:北单,如若转载,请注明出处:https://www.beidanyezhu.com/a/384.html

(0)
北单的头像北单
上一篇 2024-12-12 17:01:14
下一篇 2024-12-13 17:26:59

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

分享本页
返回顶部