首页 > 分享 > Project1

Project1

一、项目环境

前端页面:VueProject SDK:JDK1.8服务器: 阿里云

二、项目演示

项目源码:shoppingProject01_pub : version4.0项目参考:Project03;不良人_前后端分离旅游项目实战;不良人_Docker全家桶;狂神说_支付宝支付对接项目运行注意事项:同Project03项目运行过程:
项目网址:shoppingProject01_dev【若无法访问是我在维护】

三、主要模块说明

1 支付宝支付模块说明:

1.1 主要信息获取途径:
为了实现alipay功能,需要信息如下:
[a] APPID;[b] 商家私钥;[c] 支付宝公钥;[d] 支付回调地址;[e] 网关地址。
(1) 笔者采用支付宝沙箱测试获得信息[a]~[c]、[e];
(2) 为了实现有效地址[d],笔者将项目在服务器部署,同时整合了狂神说团队的接口;
(3) 为了模拟买家支付过程,笔者通过支付宝沙箱平台在手机上下载了虚拟支付宝。

1.2 数据库中主要整合过程说明:
(1) 数据库中有三张表:uesrinfo、iteminfo和orderinfo,其中userinfo用来存储用户登录信息;iteminfo用来存储商品信息;对于选中的指定商品,orderinfo用来在用户扫码支付后,存储关于该商品的订单信息。

1.3 代码中主要整合过程说明:
(1) 加依赖引配置请见源码。
(2) 从controller聊起:

在 ItemController 中,
1)如下代码段

// 支付单件商品 @GetMapping("payForItem") public byte[] alipay(String itemid) { // log.info("itemid=====>"+itemid); PayVo payVo = new PayVo(); payVo.setItemid(itemid); payVo.setUserId("1"); return alipayService.alipay(payVo); } 123456789

将指定的商品id保存在payVo实例化对象中,而后调用Service层alipayService。
2)而后的代码段

public String notify_url(HttpServletRequest request) throws Exception { // 1: 调用支付回调 boolean result = alipayCallback(request); if (result) { return "success"; // 请不要修改或删除 } else { // 验证失败 return "fail"; } } 12345678910

用来接收支付宝的回调信息(回调的主要目的就是在数据库中存储订单信息)。
3) 在往下的alipayCallback方法中,引用了service层 payCommonService 实例化对象,该对象基于设计模式思想清爽地将用户分级(普通用户、VIP用户)再进行订单保存。

在 OrderController 中,如下代码段:

@PostMapping("/alipay/callback") public R listenerCallback(@RequestBody PayVo payVo){ String userid = "1"; String itemid = payVo.getItemid(); Integer count = orderService.findOrderCount(userid,itemid); return count > 0 ?R.ok():R.error(); } 1234567

目的是为了告知扫码支付的用户,指定的商品是否已被其购买(依据在订单表中查找某条数据是否存在的思维)。

(3) 在service层,AlipayServiceImpl文件用于支付二维码的生成。

2 基于Docker的服务器部署说明:
Step1:阿里云服务器中Docker的安装与启动:

# docker安装 curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun # docker启动 systemctl status | start | stop | restart docker # 配置docker安装自启动 systemctl enable docker # 建立docker组,并使用root用户 sudo groupadd docker sudo usermod -aG docker $USER # 重启docker服务 systemctl restart docker # 如果后续docker运行出了问题,可能重启会解决 # docker镜像加速,请参考不良人docker全家桶视频 12345678910111213

Step2:Idea远程操作Docker如图1所示
在这里插入图片描述

图1 Idea远程连接服务器

Step3:通过MobaXterm远程连接服务器,

mkdir login03demo cd login03demo 12

将项目打成jar包(Maven->package),构建关于该jar包的Dockerfile文件:

FROM openjdk:8-jre WORKDIR /app ADD myproject3-0.0.1-SNAPSHOT.jar login03code.jar EXPOSE 8989 ENTRYPOINT ["java","-jar"] CMD ["login03code.jar"] 123456

在 login03demo 文件夹下,执行如下命令

docker build -t login03test:01 . # 在分号前后分别是镜像名和版本号 docker images # 可见,jar包以被构建成镜像 12

而后执行如下命令:

docker build -t login03test:01 . # 在分号前后分别是镜像名和版本号 docker images # 可见,jar包以被构建成镜像 cd ~ mkdir login03 cd login03 12345

在 login03 文件夹下,执行如下命令:

touch docker-compose.yml 1

编写docker-compose.yml文件(docker-compose是为了整合SpringBoot和MySQL)

version: "3.2" services: mysql: # 服务名 image: mysql:5.7 # 相当于 run --name container_name: mysql # 使用哪个镜像, 相当于 run image ports: # 用来完成host与容器端口的映射关系, 相当于 run -p - "3306:3306" volumes: # 完成宿主机与容器中目录数据卷共享, 相当于 run -v - mysqldata:/var/lib/mysql # 使用自定义路径映射 - mysqlconf:/etc/mysql # 使用自定义路径映射 environment: - MYSQL_ROOT_PASSWORD=1472 networks: # 代表当前服务使用哪个网桥, 相当于 run -network - login03 login03test: image: login03test:01 container_name: login03test ports: - "8989:8989" networks: - login03 volumes: # 声明上面服务所使用的自动创建的卷名 mysqldata: # 声明指定的卷名 compose自动创建该卷名,但是会在之前加入项目名 mysqlconf: networks: # 定义服务用到的桥 login03: # 定义上面的服务用到的网桥名称 默认创建的是bridge

1234567891011121314151617181920212223242526272829303132

最后,在 login03 文件夹下指定

docker-compose up 1

即可在服务器上运行本项目。

相关知识

UIO辛可/Project1
千叔叔盯着你的花瓣个人主页
MaMo☿的花瓣个人主页
zzziaco的花瓣个人主页
xiaoyanmama98的花瓣个人主页

网址: Project1 https://m.huajiangbk.com/newsview849436.html

所属分类:花卉
上一篇: 聚合支付系统,让在线交易更快,更
下一篇: 支付宝即时到账接口完整集成指南