DaxPay是一款专注于为企业和个人提供便捷支付服务的免费开源平台。它支持多种主流支付渠道,如支付宝、微-信支付、云闪付等,并提供了收单、退款、聚合支付、对账、分账等一系列完整的支付功能。
通过HTTP接口调用的方式,DaxPay确保了与现有系统的低耦合度,便于快速集成和部署。同时,它还配备了一个直观的管理界面,方便运营人员进行日常管理和操作。
特点
- 统一接口:将不同支付通道的API封装为一个标准化接口,极大地方便了业务系统的调用,减少了对接多个支付方式带来的复杂性。
- 多通道支持:不仅预集成了常见的支付方式,还允许以扩展包的形式轻松添加新的支付通道。
- 多应用配置:能够同时处理来自多个支付通道账户的请求,满足大型企业或集团内多个子系统的需求。
- 丰富的功能覆盖:涵盖支付、退款、对账、分账等所有必要的支付相关能力。
- 安-全可靠:接口请求和响应数据均支持签名机制,保障交易的安-全性。
- 易于集成:除了HTTP接口外,还提供了Java SDK,进一步简化了接入流程。
技术架构
名称 | 描述 | 版本要求 |
---|---|---|
JDK | Java运行环境 | 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"));
}
}
基础环境搭建
数据库
- 启动MySQL或Postgresql实例。
- 在数据库中创建名为
dax-pay
的新库,确保字符集为utf8mb4(MySQL)或UTF8(Postgresql)。 - 将
_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