随着电子商务的发展,移动支付也走进我们的日常生活,就像很多基础业务,如物流、云平台一样,我们现在做什么都离不开她。正因为如此,支付是当下最活跃最前沿的话题,很多流行的技术最早用来实现支付,很多新的业务也最早用在支付上。

很庆幸,本人17年毕业后,开始参与银联的无卡快捷支付系统的开发,从而进入了支付这个行业,如今已经快两年了,深知这个行业的特殊性:即业务+技术,她不仅需要会写代码,还需要了解金融的相关业务(如会计分录,结算等),可以说是一个交叉的行业。我相信你一定听说过区块链这个概念,中本聪这位大神只有通晓金融+技术,才会创造出比特币这个概念,才会提出区块链技术,二者缺一不可。18年末年,我开始参与公司收银台的开发,项目需要将原先的mvc架构改为微服务的架构。微服务的概念现在已经很成熟了,很多公司也都在进行架构的改造,我们使用的是公司自研的微服务架构,为了更好地提升自己,我在github上找了一个开源的支付项目xxPay(https://github.com/jmdhappy/xxpay-master)用来学习,本篇博客用来记录搭建xxPay的全过程和搭建过程中遇到的坑。

运行环境:

win10 64位

idea

mysql(用的版本比原先项目版本高,导致很多地方需要改,如drive,mysql-connecter等都要升级)

activemq

java 1.8以上

zookeeper(运行dubbo的例子需要安装)

下面开始介绍环境的安装:

mysql安装:

参考博客:

https://www.cnblogs.com/xsmile/p/7753984.html

https://blog.csdn.net/codingforhaifeng/article/details/80675498

https://www.cnblogs.com/sos-blue/p/6852945.html

https://www.cnblogs.com/jiangxiaobo/p/7089345.html

下载解压后进入到mysql的bin目录(需要用管理员运行),执行mysqld --initialize-insecure的时候,报了一个错误:msvcp140.dll,无法继续执行代码。解决办法参考:https://zhidao.baidu.com/question/750269134284399172.html,需要去微软官方下载VC++2015运行库,安装一下,再重新执行mysqld --initialize-insecure。

启动mysql(需要用管理员运行)

设置root密码

设置好密码后,我们在cmd中登录用root用户登陆mysql,

mysql -u root -p  登录root用户,会提示输入密码

create database xxpaydb;  创建数据库,xxpay项目要用到的数据库xxpaydb

show databases;  显示一下,看有没有创建成功

创建xxPay项目需要的用户xxpay

CREATE USER 'xxpay'@'localhost' IDENTIFIED BY 'xxpay';  创建用户和密码 xxpay/xxpay

grant all on xxpaydb.* to 'xxpay'@'localhost';  授权用户操作xxpaydb,all代表所有的操作都可以

exit  推出root用户

mysql -u xxpay -p  登陆xxpay用户

show databases;  显示一下可以用的数据库,这个时候是可以看到xxpaydb的,没有授权前,是看不到的。

use xxpaydb;  使用xxpaydb数据库

source E:\code\idea-workspace\xxpay-master\init_db.sql;  执行创建表的sql文件

show tables;  看一下表是否创建成功

select *from information_schema.processlist;  查看一下数据库的url,项目配置文件中要用到

activemq安装:

这个还是蛮简单的,只要有Java的运行环境就行了。首先是去官网下载:http://activemq.apache.org/components/classic/download/,根据你的平台选择相应的版本,我的是windows的,下载后然后解压,进入目录apache-activemq-5.15.9-bin\apache-activemq-5.15.9\bin\win64,直接双击activemq.bat,一般没有什么问题。然后在浏览器中输入http://localhost:8161/admin/,用户名admin,密码admin,就可以查看相关的队列信息了。

idea编译项目:

接下来,我们在idea中导入GitHub上的xxPay项目,然后在idea项目的Terminal中输入mvn clean package -Dmaven.test.skip=true,一段时间后,显示如下:

可以看到各个模块都可以编译成功,但是这离运行还差很多,因为有很多参数要配置,而且我们也没有可以部署的服务器,只能在本地运行,但不管怎么说,至少可以先跑一些程序。

上面编译成功后,会生成相应的jar包,我们把相关的jar包都拷到一个目录下,然后依次运行:

java -ms512m -mx512m -Xmn128m -Djava.awt.headless=true -XX:MaxPermSize=64m -jar xxpay-server.jar &

先启动服务,这个启动完成后,可以访问Eureka的网址:http://localhost:2000/。

再运行java -ms512m -mx512m -Xmn128m -Djava.awt.headless=true -XX:MaxPermSize=64m -jar xxpay-config.jar &,运行后,在eureka服务注册中心会增加这个服务xxpay-config,如下:

部署service的时候,报了Unable to load authentication plugin 'caching_sha2_password',需要执行以下命令:

ALTER USER 'xxpay'@'localhost' IDENTIFIED BY 'xxpay' PASSWORD EXPIRE NEVER; #修改加密规则

ALTER USER 'xxpay'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxpay'; #更新一下用户的密码

FLUSH PRIVILEGES; #刷新权限

继续跑,出现问题:java.sql.SQLException: Unknown system variable 'tx_isolation'

解决方法:mysql-connector-java的版本太低,用的是5.1.43,升级为8.0.11.

继续跑,出现问题:You must configure either the server or JDBC driver (via the serverTimezone

解决方法:mssql url后面加上&serverTimezone=UTC,用来设置一下时区。

因为安装的mysql版本较高,mysql驱动要改为com.mysql.cj.jdbc.Driver。

xxpay-dal中用到了mysql的分页,所有需要在项目module:xxpay-dal的pom.xml中添加如下依赖:

<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.1</version>
</dependency>

注意版本要高一点,否则会报错。这中间遇到各种各样的坑,一度想要放弃,不过最终还是慢慢地调试出来了。这步做完,会把service这个服务注册到服务中心。

接着还有web和gateway的启动,启动方法类似,启动完后,再看一下服务注册中心:

接下来我们部署xxpay-mgr和xxpay-shop项目,部署方法类似上面的,先启动mgr,启动后,http://localhost:8092/,可以看到相关网页。

部署xxpay-shop的时候,遇到一个问题,java.lang.NoClassDefFoundError: net/sf/jsqlparser/expression/Expression,这个问题上面有提到过,是因为没有找到jsqlparse的jar包,怎么会找不到呢,去pom.xml一看,都没有依赖xxpay-dal,怎么可能编译成功,于是为shop加上项目依赖,shop依赖xxpay-dal

<dependency>
<groupId>org.xxpay</groupId>
<artifactId>xxpay-dal</artifactId>
<version>1.0.0</version>
</dependency>

再编译一下,就可以了,然后部署,成功后,输入网址http://localhost:8081/goods/openQrPay.html,就可以得到付款页面:

至此,spring cloud的项目就可以部署了。接下来介绍dubbo的部署过程。

安装zookeeper:

参考网上的例子,去官网上下载后,解压缩,然后去conf中将zoo_sample.cfg改名为zoo.cfg,然后去bin目录下运行zkServer.cmd,启动zookeeper。

xxPay搭建步骤的更多相关文章

  1. Java Web 环境搭建步骤(超详细,包括前期安装步骤)

    Java Web 环境搭建步骤 安装对应版本的JDK 配置环境变量 本人安装的路径是C盘,在path中加入C:\Program Files\Java\jdk1.8.0_65\bin 测试配置成功,cm ...

  2. Linux vagrant+virtualbox环境搭建步骤

    Linux vagrant+virtualbox环境搭建步骤 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用. 我们可 ...

  3. SSH三大框架合辑的搭建步骤

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  4. cocos2d-lua 3.5 android搭建步骤

    cocos2d-lua 3.5 android搭建步骤 如何安装eclipse,jdk,android sdk,ndk这里都不说了,资料很多,而且以前用eclipse搭建cocos2d-x-c++的时 ...

  5. IIS HTTP文件服务器搭建步骤

    利用IIS搭建HTTP文件服务器,可下载.上传(用户名验证) 1.右键网站,添加应用程序 2.物理路径,选择系统的目录配置,上一层 别名:CAPI3FileService 3.效果如下: 4.(以下步 ...

  6. [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)

    MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)   网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...

  7. mysql 主从搭建步骤

    mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...

  8. Hadoop集群搭建步骤

    实验性操作是在虚拟机里进行的,除了搭建hadoop本身的操作之外,遇到的其它问题总结如下: 1. 虚拟机挂载windows磁盘: 添加硬件,要保证该硬件此时没有被读写访问等,因为挂载后,该磁盘在宿主机 ...

  9. 在Android Studio上测试运行,Unity发布成Android包的环境搭建步骤

      我用的是unity5.4.3版本,jdk是1.8.0_131版本,Android-SDK是r24.4.1版本,Android-NDK是r13b版本,作者是刚开始写博客,希望对在unity摸索的人有 ...

随机推荐

  1. Comet OJ - Contest #7 D 机器学习题 斜率优化 + 未调完

    Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...

  2. NOI 2727:仙岛求药 x

    总时间限制:  1000ms 内存限制:  65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发 ...

  3. SpringBoot:初识SpringBoot

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 1.SpringBo ...

  4. HTML canvas中translate()与rotate()的理解

    首先,当我们在页面上初始化canvas时,相当于在上面放了一块画布,这块画布我们可以理解为上面有一个坐标系(如下图),左上角是原点,往右是X轴的正方向,往下是Y轴的正方向,我们在画布上绘制的内容都是基 ...

  5. 尚硅谷Docker---1-5、docker简介

    尚硅谷Docker---1-5.docker简介 一.总结 一句话总结: docker是环境打包:有点像windows镜像 docker的实质:缩小版.精细版.高度浓缩版的一个小型的linux系统 1 ...

  6. original和source的区别

    最近跟网页翻译怼上了,在给翻译前的页面起名是纠结于使用original page还是source page,就查了一下original和source的区别. original: n. 原件:原作:原物 ...

  7. SpringBoot系列:五、SpringBoot使用Actuator

    Actuator为springboot提供了运行状态监控的功能 通过集成它我们可以试试获取到应用程序的运行信息 首先,在pom.xml中引入起步依赖 <dependency> <gr ...

  8. Mysql 免安装版本配置

    1. 安装命令 (制定安装目录的my.ini文件) mysqld --install MySQL --defaults-file="C:\mysql-5.7.26-winx64\bin\my ...

  9. 剑指offer--day05

    1.1 题目:二进制中1的个数:输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 1.2 解题思路:通过位移来进行.举例:7(二进制:0111),7 >> 1(得到:001 ...

  10. hacker101----XSS Review

    所有你见过XSS行动在这一点上,但我们来回顾一下今天我们要讨论的XSS类型: 反射型XSS --  来自用户的输入将直接返回到浏览器,从而允许注入任意内容  [浏览器输入,马上到服务器上,再反射回来直 ...