最近在查看我的AI工具(圈友互联AI)时,发现充值功能做的有点low,需要手工去拷贝订单号再验证,本次决定对此界面做下功能改造!
对于任何一个独立开发站而言,支付功能是必有的一个功能,像国内一般对接的比较多的是:微信支付、支付宝支付、云闪付、京东支付等、国外一般用的多的是:谷歌支付、Cybersource支付、苹果支付、paypal支付等,如果一家家去逐个对接,字段加调试没有几个月是搞不定的!
而以上这些,已经有前人做过整合了!经过在github上的选型和对比,最终决定选用Jeepay这款开源聚合支付系统(项目地址放在文章末尾)。
Jeepay聚合开源支付系统对接详细步骤
一、系统介绍
1、系统简介
Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付
,支付宝
,云闪付
官方接口,支持聚合码支付。 Jeepay使用Spring Boot
和Ant Design Vue
开发,集成Spring Security
实现权限管理功能,是一套非常实用的web开发框架。
2、名称由来
Jeepay = Jee + pay,是由原XxPay支付系统作者带领团队开发,“Jee”是公司计全科技名称的表示,pay表示支付。中文名称为计全支付,释为:计出万全、支付安全,让支付更加方便安全。
3、功能特点
- 支持多渠道对接,支付网关自动路由
- 已对接
微信
服务商和普通商户接口,支持V2
和V3
接口 - 已对接
支付宝
服务商和普通商户接口,支持RSA和RSA2签名 - 已对接
云闪付
服务商接口,可选择多家支付机构 - 提供http形式接口,提供各语言的
sdk
实现,方便对接 - 接口请求和响应数据采用签名机制,保证交易安全可靠
- 系统安全,支持
分布式
部署,高并发
- 管理端包括
运营平台
和商户系统
- 管理平台操作界面简洁、易用
- 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达
- 支付渠道的接口参数配置界面自动化生成
- 使用
spring security
实现权限管理 - 前后端分离架构,方便二次开发
4、系统架构
牛逼!SpringBoot+Vue企业级开源聚合支付系统!支持全部支付平台!
最近在查看我的AI工具(圈友互联AI)时,发现充值功能做的有点low,需要手工去拷贝订单号再验证,本次决定对此界面做下功能改造!
对于任何一个独立开发站而言,支付功能是必有的一个功能,像国内一般对接的比较多的是:微信支付、支付宝支付、云闪付、京东支付等、国外一般用的多的是:谷歌支付、Cybersource支付、苹果支付、paypal支付等,如果一家家去逐个对接,字段加调试没有几个月是搞不定的!
而以上这些,已经有前人做过整合了!经过在github上的选型和对比,最终决定选用Jeepay这款开源聚合支付系统(项目地址放在文章末尾)。
Jeepay聚合开源支付系统对接详细步骤
一、系统介绍
1、系统简介
Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付
,支付宝
,云闪付
官方接口,支持聚合码支付。 Jeepay使用Spring Boot
和Ant Design Vue
开发,集成Spring Security
实现权限管理功能,是一套非常实用的web开发框架。
2、名称由来
Jeepay = Jee + pay,是由原XxPay支付系统作者带领团队开发,“Jee”是公司计全科技名称的表示,pay表示支付。中文名称为计全支付,释为:计出万全、支付安全,让支付更加方便安全。
3、功能特点
- 支持多渠道对接,支付网关自动路由
- 已对接
微信
服务商和普通商户接口,支持V2
和V3
接口 - 已对接
支付宝
服务商和普通商户接口,支持RSA和RSA2签名 - 已对接
云闪付
服务商接口,可选择多家支付机构 - 提供http形式接口,提供各语言的
sdk
实现,方便对接 - 接口请求和响应数据采用签名机制,保证交易安全可靠
- 系统安全,支持
分布式
部署,高并发
- 管理端包括
运营平台
和商户系统
- 管理平台操作界面简洁、易用
- 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达
- 支付渠道的接口参数配置界面自动化生成
- 使用
spring security
实现权限管理 - 前后端分离架构,方便二次开发
4、系统架构
5、核心技术栈
软件名称 | 描述 | 版本 |
---|---|---|
Jdk | Java环境 | 1.8 |
Spring Boot | 开发框架 | 2.4.5 |
Redis | 分布式缓存 | 3.2.8 或 高版本 |
MySQL | 数据库 | 5.7.X 或 8.0 高版本 |
MQ | 消息中间件 | ActiveMQ 或 RabbitMQ 或 RocketMQ |
Ant Design Vue | Ant Design的Vue实现,前端开发使用 | 2.1.2 |
MyBatis-Plus | MyBatis增强工具 | 3.4.2 |
WxJava | 微信开发Java SDK | 4.1.0 |
Hutool | Java工具类库 | 5.6.6 |
二、功能演示
做过支付系统的兄弟们应该都知道(不知道的看完我接下来的解释应该也能清楚了^ ^),一套支付中台由三个模块组成:代理商系统、商户系统、运营后台! **代理商系统:该系统是给代理商使用的,对于只使用支付功能用户来讲可以忽略该系统,**主要用来给商户进件,配置商户费率,管理下级代理商,配置下级代理商成本,分润管理等 **商户系统:该系统是给商户使用的,**主要有设备管理、码牌管理、员工管理、订单管理、数据报表、门店管理、分账管理、个人中心等 运营后台:该系统是给运营人员使用的,主要功能一般有:数据统计、代理商管理、商户管理、订单管理、团队管理等。该系统权限比较多,一般是商户遇到问题由运营人员协助排查问题使用
好了,功能介绍完了,接下来看下该套开源系统的相关界面吧
1、代理商系统
代理商平台一般都是直接登录对应的支付平台的代理商系统后台,所以没有聚合页面,一般想要注册成为代理商需要满足以下条件!对于只使用支付功能商户来说,可以不用考虑!如果你也想成为代理商,可以按对应的支付平台流程完成入驻,后续你名下进件的商户每笔交易都可以拿到分润
代理商入驻可以参考文档:微信支付官方通道配置 - 计全文档 微信服务商平台:微信支付合作伙伴平台|平台开放更多能力,与合作伙伴一起成长 支付宝服务商平台:https://p.alipay.com/page/settleapp/isv-guide 乐刷支付服务商平台:乐刷聚合支付平台
2、商户系统
体验地址:http://mch.d.jeepay.vip 账号:huoguoji 密码:jeepay666 输入账号密码登录后界面如下
应用管理主要配置你的appId,这个appId是jeePay自动生成的,后面调用支付时需要传该参数!
支付配置可以配置你的支付通道列表,支付时候可以根据选择的通道拉起对应的支付
每个支付通道都需要配置相关参数,这些参数在进件完成后登录到对应的平台商户后台可以获取到
订单管理每笔订单都由一笔商户订单加一笔支付订单组成!
退款记录内退款订单也和支付订单做了关联
分账记录:一般这种美食城摊位用的比较多,比如美食城A商户配置了分账给总店B,则A的每笔交易在结算时会按配置比例分给B费用
3、运营后台
体验地址:http://mgr.d.jeepay.vip 账号:tiyan007 密码:jeepay666 登录后界面如下,可以查看到每日交易数据报表
应用列表可以查看到全部appid的支付配置,这里可以协助商户完成支付相关配置参数
支付接口可以配置模板列表,这里配置完成后商户在支付配置页就可以看到对应的支付平台
订单管理和商户后台的基本一致,不过运营后台权限要比商户后台的大。商户后台只能查看自己的,运营后台可以查看所有商户的订单信息
三、开发部署步骤
1、项目源码地址
后端工程:https://gitee.com/jeequan/jeepay 前端工程:jeepay-ui: Jeepay支付系统对应的前端UI项目,使用Ant Design Vue开发。专业UI界面,简单整洁。 后端工程下载下来后结构如下
jeepay-ui -- https://gitee.com/jeequan/jeepay-ui
jeepay
├── conf -- 存放系统部署使用的.yml文件
├── docker -- 存放docker相关文件
└── docs -- 存放项目相关文档说明
├── intsll -- 项目部署shell脚本
├── script -- 项目启动shell脚本
└── sql -- 初始化sql文件
└── jeepay-components -- 公共组件目录
├── jeepay-components-mq -- mq组件
└── jeepay-components-oss -- oss组件
├── jeepay-core -- 核心依赖包
├── jeepay-manager -- 运营平台服务端[9217]
├── jeepay-merchant -- 商户系统服务端[9218]
├── jeepay-payment -- 支付网关[9216]
├── jeepay-service -- 业务层代码
└── jeepay-z-codegen -- mybatis代码生成
前端工程下载下来后代码结构如下
jeepay-ui
├── jeepay-ui-cashier -- 聚合收银台项目
├── jeepay-ui-manager -- 运营平台web管理端
└── jeepay-ui-merchant -- 商户系统web管理端
2、前端工程启动
node版本要求:<= 16
参考命令
# 拉取源码完毕后请先安装依赖, 进入项目根目录命令行执行:
> npm install
# 本地启动项目(开发环境):
1. 打开根目录下文件".env.development", 修改请求服务器地址"VUE_APP_API_BASE_URL";
2. 在项目根目录命令行执行:
> npm run serve
# 打包(生产环境):
1. 打开根目录下文件".env", 修改请求服务器地址"VUE_APP_API_BASE_URL";
2. 在项目根目录命令行执行:
> npm run build
3. 文件将输出到 [/dist]目录, 拷贝到web服务器即可。
3、后端工程启动
启动方式有两种,新机器推荐方法二 方法一:传统源代码方式,mysql创建表,再逐个 方法二:一键部署
先来讲下使用方法一传统部署方式
工程下载到本地后,进入docs,把里面的mysql全部初始化好
接下来,把数据库配置成你自己的,然后把每个工程主应用都启动起来!不知道怎么启动的可以去复习下SpringBoot启动方式!
方法二:一键部署
将Jeepay作为一个支付模块部署,对外提供支付接入能力,有支付需求的业务都可以接入使用。 CentOS 安装脚本 (推荐Anolis OS 8.8):
yum install -y wget && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh
Ubuntu 安装脚本 (推荐 Ubuntu 22.04 64位):
apt update && apt-get -y install docker.io && apt-get -y install git && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh
4、后端如何集成
为了开始使用Jeepay,首先需要在项目中引入其SDK依赖。Jeepay提供了Java SDK,引入sdk依赖(最新发布版本1.5.0),支持:支付、退款、转账、分账等接口。
com.jeequan
jeepay-sdk-java
1.5.0
客户端调用代码可参考: 完整支付测试代码 com.jeequan.jeepay.PayOrderTest
// 创建客户端
JeepayClient jeepayClient = JeepayClient.getInstance(Jeepay.appId, Jeepay.apiKey);
// 构建请求数据
String wayCode = "WX_BAR"; // 支付方式
PayOrderCreateRequest request = new PayOrderCreateRequest();
PayOrderCreateReqModel model = new PayOrderCreateReqModel();
model.setMchNo(Jeepay.mchNo); // 商户号
model.setAppId(jeepayClient.getAppId()); // 应用ID
String orderNo = "mho" + new Date().getTime();
model.setMchOrderNo(orderNo); // 商户订单号
model.setWayCode(wayCode); // 支付方式
model.setAmount(1l); // 金额,单位分
model.setCurrency("CNY"); // 币种,目前只支持cny
model.setClientIp("192.166.1.132"); // 发起支付请求客户端的IP地址
model.setSubject("商品标题"); // 商品标题
model.setBody("商品描述"); // 商品描述
model.setNotifyUrl("https://www.jeequan.com"); // 异步通知地址
model.setReturnUrl(""); // 前端跳转地址
model.setChannelExtra(channelExtra(wayCode)); // 渠道扩展参数
model.setExtParam(""); // 商户扩展参数,回调时原样返回
request.setBizModel(model);
// 发起统一下单
PayOrderCreateResponse response = jeepayClient.execute(request);
// 验证返回数据签名
response.checkSign(Jeepay.apiKey);
// 判断下单是否返回成功
response.isSuccess(Jeepay.apiKey)
总结
前端工程:jeepay-ui: Jeepay支付系统对应的前端UI项目,使用Ant Design Vue开发。专业UI界面,简单整洁。 后端工程:https://gitee.com/jeequan/jeepay 接口说明文档:功能开发 - 计全文档 支付体验地址:Jeepay支付体验 - 计全科技 Jeepay是一套开源的聚合支付系统,附带了前后端相关源码,并且集成了后端sdk依赖包,对需要对接支付系统的独立站平台省去了一大笔对接时间!是一套非常实用的web开发框架。
5、核心技术栈
软件名称 | 描述 | 版本 |
---|---|---|
Jdk | Java环境 | 1.8 |
Spring Boot | 开发框架 | 2.4.5 |
Redis | 分布式缓存 | 3.2.8 或 高版本 |
MySQL | 数据库 | 5.7.X 或 8.0 高版本 |
MQ | 消息中间件 | ActiveMQ 或 RabbitMQ 或 RocketMQ |
Ant Design Vue | Ant Design的Vue实现,前端开发使用 | 2.1.2 |
MyBatis-Plus | MyBatis增强工具 | 3.4.2 |
WxJava | 微信开发Java SDK | 4.1.0 |
Hutool | Java工具类库 | 5.6.6 |
二、功能演示
做过支付系统的兄弟们应该都知道(不知道的看完我接下来的解释应该也能清楚了^ ^),一套支付中台由三个模块组成:代理商系统、商户系统、运营后台! **代理商系统:该系统是给代理商使用的,对于只使用支付功能用户来讲可以忽略该系统,**主要用来给商户进件,配置商户费率,管理下级代理商,配置下级代理商成本,分润管理等 **商户系统:该系统是给商户使用的,**主要有设备管理、码牌管理、员工管理、订单管理、数据报表、门店管理、分账管理、个人中心等 运营后台:该系统是给运营人员使用的,主要功能一般有:数据统计、代理商管理、商户管理、订单管理、团队管理等。该系统权限比较多,一般是商户遇到问题由运营人员协助排查问题使用
好了,功能介绍完了,接下来看下该套开源系统的相关界面吧
1、代理商系统
代理商平台一般都是直接登录对应的支付平台的代理商系统后台,所以没有聚合页面,一般想要注册成为代理商需要满足以下条件!对于只使用支付功能商户来说,可以不用考虑!如果你也想成为代理商,可以按对应的支付平台流程完成入驻,后续你名下进件的商户每笔交易都可以拿到分润
代理商入驻可以参考文档:微信支付官方通道配置 - 计全文档 微信服务商平台:微信支付合作伙伴平台|平台开放更多能力,与合作伙伴一起成长 支付宝服务商平台:https://p.alipay.com/page/settleapp/isv-guide 乐刷支付服务商平台:乐刷聚合支付平台
2、商户系统
体验地址:http://mch.d.jeepay.vip 账号:huoguoji 密码:jeepay666 输入账号密码登录后界面如下
应用管理主要配置你的appId,这个appId是jeePay自动生成的,后面调用支付时需要传该参数!
支付配置可以配置你的支付通道列表,支付时候可以根据选择的通道拉起对应的支付
每个支付通道都需要配置相关参数,这些参数在进件完成后登录到对应的平台商户后台可以获取到
订单管理每笔订单都由一笔商户订单加一笔支付订单组成!
退款记录内退款订单也和支付订单做了关联
分账记录:一般这种美食城摊位用的比较多,比如美食城A商户配置了分账给总店B,则A的每笔交易在结算时会按配置比例分给B费用
3、运营后台
体验地址:http://mgr.d.jeepay.vip 账号:tiyan007 密码:jeepay666 登录后界面如下,可以查看到每日交易数据报表
应用列表可以查看到全部appid的支付配置,这里可以协助商户完成支付相关配置参数
支付接口可以配置模板列表,这里配置完成后商户在支付配置页就可以看到对应的支付平台
订单管理和商户后台的基本一致,不过运营后台权限要比商户后台的大。商户后台只能查看自己的,运营后台可以查看所有商户的订单信息
三、开发部署步骤
1、项目源码地址
后端工程:https://gitee.com/jeequan/jeepay 前端工程:jeepay-ui: Jeepay支付系统对应的前端UI项目,使用Ant Design Vue开发。专业UI界面,简单整洁。 后端工程下载下来后结构如下
jeepay-ui -- https://gitee.com/jeequan/jeepay-ui
jeepay
├── conf -- 存放系统部署使用的.yml文件
├── docker -- 存放docker相关文件
└── docs -- 存放项目相关文档说明
├── intsll -- 项目部署shell脚本
├── script -- 项目启动shell脚本
└── sql -- 初始化sql文件
└── jeepay-components -- 公共组件目录
├── jeepay-components-mq -- mq组件
└── jeepay-components-oss -- oss组件
├── jeepay-core -- 核心依赖包
├── jeepay-manager -- 运营平台服务端[9217]
├── jeepay-merchant -- 商户系统服务端[9218]
├── jeepay-payment -- 支付网关[9216]
├── jeepay-service -- 业务层代码
└── jeepay-z-codegen -- mybatis代码生成
前端工程下载下来后代码结构如下
jeepay-ui
├── jeepay-ui-cashier -- 聚合收银台项目
├── jeepay-ui-manager -- 运营平台web管理端
└── jeepay-ui-merchant -- 商户系统web管理端
2、前端工程启动
node版本要求:<= 16
参考命令
# 拉取源码完毕后请先安装依赖, 进入项目根目录命令行执行:
> npm install
# 本地启动项目(开发环境):
1. 打开根目录下文件".env.development", 修改请求服务器地址"VUE_APP_API_BASE_URL";
2. 在项目根目录命令行执行:
> npm run serve
# 打包(生产环境):
1. 打开根目录下文件".env", 修改请求服务器地址"VUE_APP_API_BASE_URL";
2. 在项目根目录命令行执行:
> npm run build
3. 文件将输出到 [/dist]目录, 拷贝到web服务器即可。
3、后端工程启动
启动方式有两种,新机器推荐方法二 方法一:传统源代码方式,mysql创建表,再逐个 方法二:一键部署
先来讲下使用方法一传统部署方式
工程下载到本地后,进入docs,把里面的mysql全部初始化好
接下来,把数据库配置成你自己的,然后把每个工程主应用都启动起来!不知道怎么启动的可以去复习下SpringBoot启动方式!
方法二:一键部署
将Jeepay作为一个支付模块部署,对外提供支付接入能力,有支付需求的业务都可以接入使用。 CentOS 安装脚本 (推荐Anolis OS 8.8):
yum install -y wget && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh
Ubuntu 安装脚本 (推荐 Ubuntu 22.04 64位):
apt update && apt-get -y install docker.io && apt-get -y install git && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh
4、后端如何集成
为了开始使用Jeepay,首先需要在项目中引入其SDK依赖。Jeepay提供了Java SDK,引入sdk依赖(最新发布版本1.5.0),支持:支付、退款、转账、分账等接口。
com.jeequan
jeepay-sdk-java
1.5.0
客户端调用代码可参考: 完整支付测试代码 com.jeequan.jeepay.PayOrderTest
// 创建客户端
JeepayClient jeepayClient = JeepayClient.getInstance(Jeepay.appId, Jeepay.apiKey);
// 构建请求数据
String wayCode = "WX_BAR"; // 支付方式
PayOrderCreateRequest request = new PayOrderCreateRequest();
PayOrderCreateReqModel model = new PayOrderCreateReqModel();
model.setMchNo(Jeepay.mchNo); // 商户号
model.setAppId(jeepayClient.getAppId()); // 应用ID
String orderNo = "mho" + new Date().getTime();
model.setMchOrderNo(orderNo); // 商户订单号
model.setWayCode(wayCode); // 支付方式
model.setAmount(1l); // 金额,单位分
model.setCurrency("CNY"); // 币种,目前只支持cny
model.setClientIp("192.166.1.132"); // 发起支付请求客户端的IP地址
model.setSubject("商品标题"); // 商品标题
model.setBody("商品描述"); // 商品描述
model.setNotifyUrl("https://www.jeequan.com"); // 异步通知地址
model.setReturnUrl(""); // 前端跳转地址
model.setChannelExtra(channelExtra(wayCode)); // 渠道扩展参数
model.setExtParam(""); // 商户扩展参数,回调时原样返回
request.setBizModel(model);
// 发起统一下单
PayOrderCreateResponse response = jeepayClient.execute(request);
// 验证返回数据签名
response.checkSign(Jeepay.apiKey);
// 判断下单是否返回成功
response.isSuccess(Jeepay.apiKey)
总结
前端工程:jeepay-ui: Jeepay支付系统对应的前端UI项目,使用Ant Design Vue开发。专业UI界面,简单整洁。 后端工程:https://gitee.com/jeequan/jeepay 接口说明文档:功能开发 - 计全文档 支付体验地址:Jeepay支付体验 - 计全科技 Jeepay是一套开源的聚合支付系统,附带了前后端相关源码,并且集成了后端sdk依赖包,对需要对接支付系统的独立站平台省去了一大笔对接时间!是一套非常实用的web开发框架。