java语言开发的三方支付系统,内带activemq消息中间件,支持高并发订单回调。此系统拓展性极高,里面已经自带微信,支付宝云闪付等各种三方支付本地插件,你也可以自己添加,简单好用。并且支持服务商和商户分账模式,难得好用的支付系统。
因为是java的程序,所以特意做了完整的环境到程序部署教程,已经一起打包。
作者:白明月
jeepay计全三方java支付系统前后端完整源码支持分账模式和高并发
程序演示
环境准备
操作系统 | CPU | 内存 | 带宽 | 其他 |
---|---|---|---|---|
Linux CentOS 7.X | 4核 | 8G | 2M+(或弹性) | 开发测试环境配置再低些也可以部署 |
软件环境需安装:
软件名称 | 版本 | 说明 |
---|---|---|
Jdk | 1.8 | java运行环境,在jdk1.8下开发,其他版本没测试 |
Redis | 3.2.8 | 分布式缓存,高版本也支持 |
MySQL | 5.7 | 不低于5.7,支持8.0高版本 |
MQ | ActiveMQ 或 RabbitMQ 或 RocketMQ | 消息中间件 |
Nginx | x | 非必须,反向代理使用,其他版本也支持 |
以上软件请自行百度安装,MySQL、Redis、Nginx 的安装推荐使用宝塔安装,宝塔下如何安装请自行查阅文档。
服务端部署
- 项目下载
https://www.arkvk.com/300.html
- 项目编译
使用命令行进入项目内(应该在jeepay项目最外层的pom.xml中, 不可进入到jeepay-manager项目下执行,否则会出现问题)
$ mvn package
注意:
windows 建议使用 【cmd】 【powershell】可能会出现问题。
其他知识点:
powershell 添加参数需要使用: mvn package ‘-Dmaven.test.skip=true’ 添加引号的方式, 否则会报错。
编译成功后,会在每个模块的target
下会生成下面名字的.jar
文件,如下:
jeepay-manager/target/jeepay-manager.jar
jeepay-merchant/target/jeepay-merchant.jar
jeepay-payment/target/jeepay-payment.jar
- 项目启动
1)使用root
用户登录云服务器,创建jeepay
用户,切换到jeepay用户,并在/home/jeepay
目录下创建service
和upload
文件目录。参考命令如下:
# 创建用户
useradd jeepay
# 切换用户
su jeepay
# 进入目录
cd /home/jeepay/
# 创建目录service和upload
mkdir service && mkdir upload
2)在service
目录下创建目录manager,merchant,payment
,然后将上面编译后的.jar文件分别传入对应的目录中。
# 进入到service目录下
cd /home/jeepay/service
# 创建目录manager,merchant,payment
mkdir manager && mkdir merchant && mkdir payment
3)初始化数据库,在msyql5.7下创建数据库jeepaydb
,用户jeepay
,密码123456
(数据库和账号密码可自己设定,密码不要过于简单)。
执行项目下 docs/sql/init.sql
,确保所有语句执行成功。
4)下面以启动manager
为例
将项目下 docs/scpript/app.sh
上传到至 /home/jeepay/service/manager 下。
将项目下 conf/manager/application.yml
上传至 /home/jeepay/service/manager 下。
此时manager目录下应该有 jeepay-manager.jar、app.sh、application.yml 三个文件。
修改 application.yml
中的配置为你自己环境对应配置,主要包括服务端口、数据库连接配置、Redis配置、ActiveMQ配置等。
server:
port: 9217 #设置端口为9217
spring:
datasource:
# yml填写url连接串, 无需将&符号进行转义
url: jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
username: jeepay
password: 123456
redis:
host: 127.0.0.1
port: 6379
password:
#activeMQ配置
activemq:
broker-url: tcp://localhost:61616 #连接地址
#日志配置参数
logging:
level:
root: info #主日志级别
com.jeequan.jeepay: debug #该项目日志级别,当需要打印sql时请开启为debug
path: ./logs #日志存放地址
#系统业务参数
isys:
allow-cors: true #是否允许跨域请求 [生产环境建议关闭, 若api与前端项目没有在同一个域名下时,应开启此配置或在nginx统一配置允许跨域]
jwt-secret: P982P8e6472qTc3u #生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。
# 文件系统配置项(系统内oss, 并非云oss)
oss-file:
root-path: /home/jeepay/upload #存储根路径 ( 无需以‘/’结尾 )
启动manager项目:sh ./app.sh start
常用命令:start
启动程序 stop
停止程序 restart
重启程序
查看系统日志:tail -f ./logs/mgr.all.log
注:如果日志没内容,可能启动失败,查看start.log日志:tail -f ./start.log
看问题。
其他 merchant
和 payment
参考manager项目启动即可。
前端部署
- 项目下载
git clone https://gitee.com/jeequan/jeepay-ui.git
- 项目编译
1)项目下载后在jeepay-ui
下会有三个目录,分别是:
jeepay-ui-manager:运营平台对应的前端代码
jeepay-ui-merchant:商户系统对应的前端代码
jeepay-ui-cashier:支付收银台前端代码(只有用到聚合扫码收银台时才需要部署)
2)以 jeepay-ui-manager
为例
进入到目录 jeepay-ui-manager
下,修改服务端接口配置。
修改文件 .env
中的 VUE_APP_API_BASE_URL
配置,如果前端和服务端部署在同一域名下,该值留空,否则需要设置为服务端接口地址。
修改为manager服务地址,如:http://mgr.xxx.com 或 http://202.112.102.18:9217 (域名和ip端口以你服务端真实部署为准)。
3)修改后按如下命令执行
安装依赖:npm install
打包文件:npm run build
打包后,生成dist目录,将dist目录下所有文件上传至服务器(建议上传OSS,使用CDN加速效果访问效果更好)。
其他 jeepay-ui-manager 和 jeepay-ui-cashier 参考 manager 的打包和部署
Nginx配置
将域名mgr.x.jeepay.vip
,mch.x.jeepay.vip
,pay.x.jeepay.vip
解析到服务器IP
manager项目配置
upstream mgr-api {
server 127.0.0.1:9217 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name 替换你的域名;
index index.html index.htm ; 替换你宝塔的5行配置
root /home/jeepay/html/manager;替换你宝塔的6行配置
#解决vue刷新404问题
try_files $uri $uri/ /index.html;
location /api/
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://mgr-api;
# 启用支持websocket连接
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
merchant项目配置
upstream mch-api {
server 127.0.0.1:9218 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name 替换你的域名;
index index.html index.htm ; 替换你宝塔的5行配置
root /home/jeepay/html/manager;替换你宝塔的6行配置
#解决vue刷新404问题
try_files $uri $uri/ /index.html;
location /api/
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://mch-api;
# 启用支持websocket连接
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
payment项目配置
两种方式 选择一种即可。
A: 收银台前端文件, 直接使用后端java项目内置资源
upstream pay-api {
server 127.0.0.1:9216 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name 替换你的域名;
index index.html index.htm ; 替换你宝塔的5行配置
root /home/jeepay/html/manager;替换你宝塔的6行配置
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://pay-api;
}
}
B: 收银台前端放置到nginx, 需要将jeepay-ui-uapp-cashier 进行打包操作。
upstream pay-api {
server 127.0.0.1:9216 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name 替换你的域名;
index index.html index.htm ; 替换你宝塔的5行配置
root /home/jeepay/html/manager;替换你宝塔的6行配置
location ^~ /api/
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://pay-api;
}
}
注意:
使用B方式部署时,/home/jeepay/html/payment 目录下面需要新建cashier文件夹,在/home/jeepay/html/payment/cashier下存放index.html等前端打包文件文件。
目录结构:
html
∟ payment
∟ cashier
index.html (jeepay-ui-uapp-cashier 打包文件)
∟ css
∟ js
初始账号
系统部署后初始账号密码。
运营平台
账号:jeepay
密码:jeepay123
商户系统
账号在运营平台创建, 默认密码:jeepay666
登录商户系统后可测试支付下单流程。
本文出自:https://www.arkvk.com/300.html