各位同学大家好,学完违纪罚款这一章,我相信大家都收获了不少知识。在我们眼里VUE3.0和SSM框架的CRUD操作,已经算不上什么了,更让我们惊喜的是在这一章我们学到了微信支付功能。从业务流程到程序实现,都挺复杂的。如果不是有人教你怎么写这部分代码,很多同学自学微信支付肯定会踩很多坑。就拿微信官方提供的支付的工具类来说吧,里面计算数字签名默认的算法是SHA,而微信支付要求使用MD5计算数字签名。有很多同学用了官方的工具类,死活就是创建不了支付订单。所以有人教你怎么写程序实现微信支付,可以避过很多坑。
一、对罚款记录实现CRUD操作
违纪罚款这一章的任务还是挺多的,一共有20多集视频。我们用了8集视频就完成了基本的CRUD操作。可以手动添加罚款记录,也能修改和删除罚款记录,这些都不算什么。
二、熟悉微信支付业务流程
这一章的重点和难点是微信支付罚款。想要给项目开通微信支付,就得有企业身份。通过我借用给大家的企业身份,我们可以在项目中使用微信支付。前提是你必须要用我提供的APPID、密钥和数字证书什么的。Native类型的微信支付可以分为三个流程。第一个流程是创建支付订单,第二个流程是用户扫码支付,第三个流程是用户主动发起查询付款结果。之所以微信支付流程这么复杂,还不是因为用户、商家和微信平台,这三方相互不信任。商家创建的支付订单,用户不相信,还得查询一下付款详情,确认之后才能付款。如果是毫无经验的初学者,遇到这么麻烦的调来调去,肯定就头晕了。
三、创建支付订单并且成功付款
因为有我提供的工具类,所以我们创建支付订单也不麻烦。就是向API接口传递一些参数,然后就能创建出支付订单了。付款信息需要转换成二维码图片让用户扫码,其实在前端和后端都可以生成二维码图片,只不过支持Vue3.0的二维码图片库太少了,所以我就在后端项目生成二维码图片,然后转码成base64字符串传递给前端页面。用户扫码付款,这是用户和微信平台之间的事情,不需要调用emos项目。
四、利用WebSocket推送消息给前端页面
只有付款成功的时候,微信平台才会把付款结果发给移动端和商户系统。我们的emos-api项目想要把结果推送给前端页面,于是就用上了WebSocket技术。有了长连接,后端随时可以推送消息给前端页面。只不过,我们写后端服务类确实挺陌生的。这也没什么,毕竟WebSocket和HTTP协议是有区别的。有一个地方大家不能忽视,那就是为了避免WebSocket连接超时,前端页面要轮询发送ping给后端服务类。而且后端不会把ping请求的Session缓存起来。所以我们在接收后端推送消息之前,必须要发送一个非ping请求,后端才能先把Session缓存起来。有了缓存的Session,才能推送消息给前端页面。
五、未收到付款成功通知,可以主动查询结果
付款成功还不算完,如果用户或者商户系统没有收到付款成功的通知怎么办?与其被动接收通知消息,倒不如我们主动查询付款结果。只要用户在前端页面点击支付成功按钮,后端系统就会调用微信支付的API接口,主动查询付款结果。如果付款成功,就把罚款记录修改成已付款状态。另外,违纪罚款模块还配有Echart图表,这部分功能的开发,我放在这一章的手册的附录上面了,大家可以看着教程自己实现一下。好了,以上的这些就是本章的全部重点,下一章我们要完成请假管理模块,各位同学,咱们下一章再见。