乡村振兴助农直销超市平台订单支付的设计研究

2022-05-30 10:48刘佳龙王卓胡志慧
客联 2022年7期

刘佳龙 王卓 胡志慧

摘 要:乡村振兴助农直销超市通过采集乡村特色农产品的相关信息,提供面向消费者的直销平台,为乡村经济注入新动力。系统基于Spring Boot开发,采用MySQL开源数据库进行数据的存储,订单支付通过接入微信支付实现。微信支付设计利用分布式锁来进行并发的控制,保证系统的付款安全。

关键词:直销平台;Spring Boot;微信支付

一、引言

伴随互联网的高速发展,越来越多的内容以全新的方式呈现在人们面前。以农业为特色的电商平台,将发挥互联网科技的优势,让农民告别由中间商统一收购的传统销售模式,迎来了面向消费者的直销模式[1]。此模式既可助力乡村经济的发展,同时又解决了以往农民发愁的滞销或压价问题。乡村振兴助农直销超市平台设计采用前后端分离的思想,后端服务架构模块化,不同层面做出相应的功能,采用接口方式衔接所有模块,前后端交互通过HTTP协议进行交互,前端结合VUE框架快速构建交互接口,规范统一,后端只需要满足基本的数据结构即可。既解决系统的稳定性,也提高了用户的易用性。

二、平台目标与内容

主要对线上平台的设计做出详细说明,使用Web技术做到商品的信息展示交易。同时在技术上,将会结合网络,数据库等技术,同时使用Spring Boot框架构建项目。项目采用前后端分离开发模式,前端会使用VUE框架来渲染数据,同时结合第三方组件进行通信等行为。同时采用“JSON”格式来进行前后端的交互[2]。所以系统主要有这几个目标:

结合互联网流行的技术来处理相应的问题,比如采用Redis作为分布式锁,解决微服务集群的并发问题。同时整合这些中间件来融入系统,更为便捷的搭建整个系统。

对用户的需求分析,主要是功能性的研究设计与实现,主要设计商品的展示、全局的搜索、分页展示、轮播图效果展示、订单管理、购物车管理、用户信息等等功能模块。最后将所有的功能模块整合形成一个完整的闭环,实现整个系统的电商平台。

对每个功能点的测试[3],功能性的业务测试,完整的流程的处理。非功能性的用户交互逻辑行为体验测试,做出最佳的调整。

三、订单支付功能设计

订单付款是一个核心的业务,涉及到微信支付,同时由于开发采用局域网,所以还会涉及到内网穿透。订单作为用户交易的核心,为了保证安全和可靠,也做了一些业务上的逻辑梳理,尽可能的保障交易的安全。

(一)业务流程

用户首先是通过购物车选中相应的商品,所以依然涉及到身份的校验。对于选中的商品点击结算即可进入订单页面,这个时候的订单页面是需要调整信息的,当然也可以不进行调整,直接采用默认的数据即可。准备数据进行完成之后才进行付款,这里付款可能涉及到的操作很多。第一,付款成功且收到微信的通知,这是正常的付款流程,直接改变订单的状态。第二,付款成功但没有收到微信通知,这可能是由于网络的拥塞造成,这个时候由于后端设置了自检,会不断的查询数据库超过30分钟的订单,所以当超时时候不能直接取消订单,而是需要再次向微信发送确认订单是否支付,如果没有支付则取消,支付了就改变订单状态为已支付。第三,未支付,对于直接没有付款的订单,依然会向微信确认,再取消相应的订单。流程图如1所示。

(二)類结构设计

这里提供了两个接口,一个是OrderController,这个对外提供的接口是交给前端调用的,后端接收到相应的订单数据进行业务上的处理,而PayController是被微信调用的,微信成功收到付款就会回调这个接口,同时由于需要接入微信支付,所以这里依赖了微信的一些接口,同时需要自己去实现配置这个接口,体现在类图中的WXPayConfig,同时相关的配置交给实现类WxPayConfig。这个类只简单的返回了一些微信需要的认证数据。最后在业务处理方面都交给了OrderService这个接口规范并由OrderServiceImpl实现具体业务流程。由于该业务涉及的表结构较多,所以这里聚合了四个数据库操作的Mapper接口。

最后,需要指出一点,这里的业务中会有微信回调的接口,涉及到公网的交互,我们知道,我们自己的电脑接入的都是局域网,虽然可以访问公网,但是公网是无法访问我们的IP的,所以这里需要做一个内网穿透,穿透的方式有很多,这里就不再介绍。如果将该服务部署在公有云服务器,则直接配置云服务器的IP即可。相关伪码如下:

(1)分布式锁伪代码如下:

HashMap map = null;

/**

* 进行加锁,对每一件商品进行校验.

* 使用双重校验,如果库存不足不需要加锁直接返回,加锁之后同样需要再次* 校验。

*/

0 校验库存

1 加锁

try{

if(是否上锁){

2 校验库存

if(库存充){

3 保存订单

4 保存快照

5 修改库存

6 删除购物

...

}

}

}catch(Exception e){

}finally{

7 释放锁

}

return map;

(2)超时取消伪代码:

//定时任务,每隔5秒执行一次

public void checkAndCloseOrder() throws Exception {

//1. 向数据库查询超时订单

//2. 向微信平台发送订单信息,查看是否已支付

if(是否已经支付){

//2.1支付成功,说明是网络原因,则正常修改订单状态

}else if (是否没有支付){

//2.2. 如果确实是没有支付,就发送给微信关闭这个支付链接

//2.3 修改orders表中该订单信息(超时未支付)

}

(三)效果界面

该效果由两个部分组成,一个是订单页面,如图2所示。另一个是支付页面,如图3所示。至于支付成功的页面只是在支付页面上多了支付成功文本提示,所以这里不再重复给出。

四、总结

随着互联网技术发展,人们越来越关注消费体验,整个系统依然还有很大的调整空间。例如系统目前只是基于Maven进行了简单的划分,没有使用微服务的架构。同时订单支付还只设计接入了微信支付,后面还可以考虑接入支付宝等平台。未来还有很多可以进一步优化的地方,同时技术在飞速的发展,这也促使我们需要不断地学习来跟上发展的脚步。

参考文献:

[1]王敏杰,马云飞,蔡淑敏,于淼.2022新零售风口[N].国际金融报,2022-01-24(005).

[2]温立辉.AJAX异步交互技术浅析[J].山东工业技术,2017(04):213.

[3]张辉.Web系统的性能测试技术研究[J].计算机时代,2021(10):28-31.