一款免费的支付系统,支持支付宝、微信、云闪付等通道,为企业和个人提供便捷支付服务(带私活源码)

前言

在当今数字化经济快速发展的时代,支付系统的稳定性和易用性成为各行业业务发展的重要支撑。然而,传统支付系统的复杂度高、对接成-本大,以及维护难度高等问题,使得许多开发者和企业望而却步。

为了应对这些挑战,DaxPay应运而生——一款旨在简化支付集成过程、降低开发成-本的开源支付系统。

介绍

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

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

特点

统一接口:将不同支付通道的API封装为一个标准化接口,极大地方便了业务系统的调用,减少了对接多个支付方式带来的复杂性。

多通道支持:不仅预集成了常见的支付方式,还允许以扩展包的形式轻松添加新的支付通道。

多应用配置:能够同时处理来自多个支付通道账户的请求,满足大型企业或集团内多个子系统的需求。

丰富的功能覆盖:涵盖支付、退款、对账、分账等所有必要的支付相关能力。

安-全可靠:接口请求和响应数据均支持签名机制,保障交易的安-全性。

易于集成:除了HTTP接口外,还提供了Java SDK,进一步简化了接入流程。

技术架构

名称描述版本要求JDKJava运行环境21+Spring Boot开发框架3.3.xRedis分布式缓存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中添加以下依赖项:

org.dromara.daxpay

daxpay-single-sdk

${latest.version}

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 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

项目启动

后端

导入项目至IDEA,等待Maven自动下载依赖。

修改daxpay-single-server模块下的配置文件,更新数据库和Redis的连接信息。

运行DaxpayServer类中的main方法启动应用。

PC前端

确认Node.js (v18.12.0+) 和 pnpm (v9.0.2+) 已正确安装。

使用Vs Code或WebStorm打开项目,依次执行以下命令:

安装依赖: pnpm install

启动开发服务器: pnpm run dev

H5前端

确保Node.js (v18+) 和 pnpm (v8.6.10+) 已正确安装。

使用Vs Code或WebStorm打开项目,依次执行以下命令:

安装依赖: pnpm install

启动开发服务器: pnpm run dev

本地调试

由于支付涉及到第三方网关交互及域名限制,建议采用如下方式进行本地调试:

准备内网穿透:使用工具如ngrok或frp实现本地服务对外网的访问。

Nginx配置:设置反向代理规则,将外部请求转-发给本地的服务端和H5前端。

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 8888;

server_name www.daxpay.cn;

location ^~/h5 {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_buffering on;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy_pass http://localhost:9100/h5;

}

location /server/ {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_buffering on;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy_pass http://localhost:9999/;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

H5前端配置:调整.env.development文件中的变量,指-定正确的根路径和服务端API前缀。

VITE_PORT=9100

VITE_PUBLIC_PATH=/h5

VITE_GLOB_API_URL=

VITE_GLOB_API_URL_PREFIX=/server

VITE_V_CONSOLE=true

开源协议

DaxPay遵循Apache License 2.0协议发布。

即刻体验

DaxPay不仅提供了一套完整的支付处理方案,还特别注重用户体验和操作便捷性。下面我们将详细介绍一些核心功能,并通过图文结合的方式,帮助您快速上手并充分利用DaxPay的强大特性。

支持支付配置

支付通道:轻松添加和管理支付宝、微-信支付、云闪付等主流支付渠道,确保您的业务能够覆盖更广泛的用户群体。

支付方式:根据不同场景选择合适的支付方式,如二维码支付、H5支付、APP支付等,满足多样化的需求。

接口信息:为每个支付通道配置相应的API密钥和其他必要参数,保障交易的安-全性和稳定性。

订阅通知:设置回调URL以接收支付结果的通知,及时更新订单状态,提高客户满意度。

商户管理

应用信息:创建和管理多个应用账户,为不同的业务系统分配独立的支付权限,便于集中管理和统计分析。

订单管理

支付订单:实时查看和管理所有支付订单的状态,包括待支付、已支付、支付失败等,确保每一笔交易都得到妥善处理。

退款订单:当需要时,可以发起退款请求,支持部分或全额退款,简化售后服务流程。

转账订单:对于涉及资金转移的业务,DaxPay同样提供了便捷的转账功能。

交易记录

回调记录:记录每次支付回调的结果,方便排查问题和进行数据分析。

交易流水:详细展示每笔交易的具体信息,包括时间、金额、支付方式等,帮助您掌握资金流动情况。

关闭记录:对于未完成的交易,可以选择手动关闭,避免不必要的资源占用。

同步记录:保持与第三方支付平台的数据同步,确保本地记录与实际交易一致。

商户通知

订阅消息:根据需求订阅特定类型的支付事件通知,如支付成功、退款完成等,获取重要信息。

回调消息:自定义回调逻辑,将支付结果及时反馈给业务系统,实现自动化处理。

对账管理

对账文件下载:定期生成对账文件,包含详细的交易信息,方便与银-行或支付机构进行核对。

自动对账:集成智-能对账功能,自动比对交易记录,快速发现差异并标记异常,降低人工成-本。

结语

DaxPay凭借其简洁的设计、丰富的特性和强大的性能,已经成为众多企业和开发者的考虑的支付系统。

如果您正在寻找一种高-效且可靠的支付集成方案,不妨试试DaxPay,相信它会给您的项目带来意想不到的便利。