课程名称: SpringBoot+Vue3 项目实战,打造企业级在线办公系统
课程章节: 第7章 罚款模块
主讲老师: 神思者
课程收获
在Emos当中,员工如果出现了会议迟到或者打卡迟到等等。详细可以查看思维导图:
基础的CRUD就不详细去阐述,可以去查看讲师的讲义。这里记录的是微信支付相关的学习笔记。
微信支付有很多种形式,调用的API接口也不相同。现在做的是Web版本的在线办公系统,所以就得使用Web版本的微信支付API接口。这里我们用的是微信支付里面的Native支付,就是网站生成支付二维码,然后用户在手机上面用微信扫码付款。
课程收获
商品订单是我们本地系统生成的。由于我们做的不是电商系统,所以本地的商品订单其实就是罚款单,用户要为这笔罚款付钱。支付订单是微信服务器生成的,我们调用API接口,传入参数就能创建支付订单了。
每个支付订单都有唯一的ID值,将来查询这笔付款是否支付成功,就会用到支付订单的ID作为查询条件。
另外,商品订单ID在项目中也必须要唯一。例如我们用某个商品订单ID创建支付订单,第一次可以成功创建支付订单,但是你再用这个重复的商品订单ID创建支付订单,微信服务器就会报错,因为这个商品订单ID已经用过一次了,tb_amect
表中的uuid
字段是全局唯一的,用来做商品订单ID正好合适。
当用户拿手机扫描二维码之后,自动访问微信平台,然后查询支付订单的详情(收款方、支付金额、订单备注等等),如果用户确认没有问题,就可以在手机上输入支付密码了。这个付款请求不是发给卖家的(怕卖家篡改支付金额),而是直接发送给微信平台的。微信平台先核对请求内容,然后执行扣款,最后把付款结果分别发送给商家的后端系统和付款人。
创建支付订单的时候,其中的参数就包含了商户系统的接收付款结果的URL地址,微信服务器会向这个URL地址发送付款结果。但是万事万物总有个特殊情况,万一微信服务器的消息队列宕机了,没能向商家的系统发送付款结果,那么商家系统中的订单状态就依然是未付款的状态。当然了,商家系统没能接收到付款通知的原因有很多,例如短暂的网络故障,程序错误等原因。
与其被动等待付款结果的通知,不如让商家系统主动去查询付款结果。当用户手机微信显示付款成功,但是商户页面上没有出现付款成功的提示,这时候用户可以点击页面上的“已经付款成功”按钮。前端页面会向商户系统发送Ajax请求,商户系统会主动想微信服务器发起查询请求,核对该笔支付是否成功付款。如果付款成功,就修改商品订单为已付款状态。
课程截图
共同学习,写下你的评论
评论加载中...
作者其他优质文章