00:00
就刚才这个二维码接口完成,然后最后咱写的是什么呢?给大家说这个过程啊,比如我现在有二维码,我用微信一扫二维码是不是可以做支付,当咱支付支后要干什么事情?因为这支付过程是在手机上操作的,不是咱程序处理的,是由微信做到的,咱在手机上用微信支付可以的,但是当我支付之后咱要干什么?各位可以考虑一下啊,要干什么?我这里给大家强调啊,首先第一个咱支付之后,是不是要知道你是否支付成功了,这肯定是必须的,所以咱们下面就写一个接口,什么接口呢?就是来查询我们这个支付的状态,也就是啊里边的这个接口我们看一下。就是在这里。查询你支付的状态,也就看一下我这个支付,这个订单是否支付成功,这个咱要做个查询,就是如果说你订单支付成功了,那咱要干什么事情。
01:01
给大家说一下啊,首先第一个各位看啊,在我们的支付表里边,咱说要加条记录,就是加一条你支付成功记录,另外在咱订单这个订单里边,咱需要改个地方,就是把这个状态改成一,这个咱说过零表示未支付一表是不是已支付,所以大家要需要做这么件事情。我再说一遍啊,咱们要起个接口,查询订单是否支付成功,就查你的订单状态,如果说你订单支付成功了,那咱怎么做呢?做两件事情,第一件事情,像这个就是支付记录表中加一条你支付成功的记录,然后第二个改一下我们订单的状态,把这只改成一,因为它零代表未支付,一代表已支付,这个就是咱们要做的事情,先查询,然后添加记录,最终改状态。把这个过程我们最终来实现出来啊,这是我们要写的这么一个借口,各位啊,知道这个过程啊。
02:01
那咱们来写一下啊,把这个给它最终完成。这个图啊,我先保存一下啊,然后咱写下一个接口。在这个位置啊,我重新画一下。咱现在做的事情就是。查询订单的支付状态,就是状态嘛,成功或者失败,然后里边我写一下接口啊。来到我们这个。Paylo ctrl里边。这个位置。查询订单。支付的状态,那怎么做往下写一下啊,咱来一个get提交方式在里边,我给它起个名字,因为叫查询状态嘛,我就叫这个query,呃,支付状态配CS。然后咱查询根据什么查呢?因为咱们在生成这个二维码的时候,是不是根据订单号生成的,所以你根据订单号就能查出来,包括咱看啊,在我生成二维码的时候,我向里边是不是设置过你的订单号,所以咱现在根据订单号就能查出你的一个状态啊,所以我们传播参数就是我们这个订单号。
03:15
O no。写到这个位置啊。参数。是我那个。订单号,咱根据订单号能查询支付的一个状态,这个啊是咱们写的一个方法,然后下面给它完成,我写个public r方法就叫query pays。查询状态,然后在方法中咱把那个订单号给他先获取到。我写个pass加个缀o.no。这个是订单号,然后写完之后,下面我们写方法来做操作啊,这个方法我就写到set中啊,咱在CTRL中写这么一个过程啊,那这里边我调这个方法,就这个叫paylo service里边这个查询订单的这个状态。
04:06
还是叫这个名字啊,订单状态里边传一个。订单号。然后查这个状态呢,比如说咱最后给他也是一个map即可啊,一会咱给他也返一个map,都来一个string。这里边啊加一个。Map,呃,这方向括号啊,这是咱们一会儿返回的啊,然后反应之后怎么做呢?咱就可以根据啊map中的值做个判断啊,这个我提前说一下,因为咱没有写到,因为咱一会儿查这个订单的状态,咱们也是调用,就是微信一个固定地址向里边传参数,就能给我们返回它的状态,而它返回状态中里边有很多数据,所以咱们也是用一个map集合接收,就好比说咱刚才做那个二维码的时候,里边有很多数据,咱用map,现在你的状态反应知识很多,咱用map也可以给他做一个操作啊,所以这是我们做法。
05:04
然后这个做完之后,下面咱可以做个判断。我写一下啊,比如现在我判断,如果说它这个map等于空,它就没有什么返回,那这个时候呢,一般是因为你这个支付可能有问题了,我们给他直接就推一个iol了啊I,然后点上比如叫这个。Message我们写一个就是支付出错了啊。做一个提示,如果说呢,你里边的map不等于空,那咱们在map里边能取到你那个状态,那怎么给大家说一下啊。如果说我们。返回的那个。Map里边它。部位空,那咱们通过这个map能获取里边那个就是订单的这个状态,那怎么获取给大家写一下啊,在咱的map中呢,后面咱会设置一个值啊,或者说这里边有一个固定值,那这值是什么呢?我把代码给大家写出来啊。
06:06
啊,就写一个叫。Map。啊,卖跑。点上get,就根据K,然后它的K有一个值,就是咱们刚才写的这个值啊,里边找一下应该是。这个啊,也就叫trade trade state。哎,跟这个相关啊。那个纤维用它改一下啊,它里边有一个值叫trade state sta。应该叫T啊,应该这个值啊,一会咱再看课件啊,给大家复制过来,然后这里边如果它这值啊,等于这个叫success。Success啊,Sus最后这个过程我们都会用debug来看,我先把流程大家写出来啊,就是现在在我们调这个微信那个官方地址的时候,它会给你返一个map集合,Map集合中有一个key叫这个名字,如果它的值是success,就表示咱们这个支付成功了啊,这是它一个固定写法,然后支付成功之后,那咱怎么做呢?就咱们刚才说的做法,我们现在就可以。
07:13
向我们这个就是支付表中加记录,同时更新我们那个订单的一个状态。就这过程啊,添加记录到我们那个支付表里边。并且更新你订单表里面订单的一个状态啊,咱就要做这视角,那这方法咱一会儿也写出来啊,我先写下这个结构叫paylo three,比如这个方法我就叫update orders。Status。里边啊,传入咱这个外部集合就传它啊里边这个值。然后这样的话啊,我们把这个结构应该就出托到比如return这么一个OK。这个是一个基本结构啊,那结构我再说一下啊,然后最后刚才写了两方法,重点是两方法,那结构怎么样?现在我们先根据我的订单号调微信的那个官方提供地址,看一下咱的订单是否支付成功,或者目前订单什么状态,而他的状态中返回是一个ma集合,咱做个判断,如果反应值等于空,那就表示支付肯定有问题。
08:24
如果它不等于空,那咱看在map中的这个名字,它的值是否是success,这咱一会儿会用debug看一下它这个过程啊,如果它是success,就表示咱们支付成功了,如果支付成功怎么做呢?咱们就是向记录表中加一条支付记录,然后同时更新订单状态,把状态变成一,最后再这个OK。主要啊这么一个过程,这个血压啊,就是。支付成功。所以咱们啊,把这个过程我们做了一个说明啊,然后里边如果说你这个不是此,那肯定目前应该正在支付中,大给它也是履行一个值,比如R点这个。
09:08
写错了啊,R点这个OK。比如说点上一个叫。Message啊,里边我来一个叫。支付中啊,所以咱们目前是这么一个结构啊,这里边也写一下叫做。点上message,这个叫支付成功。所以这个啊,是咱们写的一个最基本的一个逻辑啊,稍微麻烦一点啊,但这些步骤每一步都必不可少,先调接口查询,然后看它是否成功,成功的话添加记录到支付表,并且更新订单表中的状态啊,这个啊,咱们把这个。CTRL部分我们做了一个初步实现啊,然后一会儿我们再进一步完善。然后这个做到之后,咱最后写的就是里边的两个方法,一个查状态,一个是添加记录和更新状态,啊把这两个最终的方法我们给它写出来。
10:06
那我来创建一下啊。先创建这个方法。这个方法做的适应就是。根据订单号查询订单的这个支付的状态啊,第一个,然后第二方法,这个方法。这个啊,我也给它创建出来。然后这个方法做的适应就是两件事情。第一个。向我们的那个支付表里边添加咱们这个支付记录,同时更新我们里边这个就是订单的那个状态,让它状态变成一个叫已支付啊主要这两个方法就在里边我们做了创建。然后创建之后,最后咱来到service中,在里边把这两个方法,我们最终给他就填一下啊,这是我们最终要写到的这两部分。那咱来最后写下啊。咱看怎么来做啊。
11:01
我这里写一下第一个。查询订单的。支付状态。然后第二个。就是添加支付记录和更新我们里面那个订单的状态啊,这是两方法,那两方法最后啊,给大家我来最终写一下啊,这两方法中我强调咱的第一个方法是一个固定的结构,因为他要查询就是微信,通过微信的接口把这做到,所以咱先把这个方法先快速写出来,然后咱再写我们的这个方法啊,那我们来实现啊,咱看怎么做啊。首先查询这个方法跟我们刚才的代码差不多啊,咱看一下我的课件中啊,把这找到。在课件中,这方法应该是在这位置啊,咱看啊,刚才差不多基本类似,第一步也是用map集合封装参数,这几个参数是固定的,然后咱们还是发送AP请求,用叉L传数据,包括加密,最后反应结果,结果再转成咱的map集合。
12:09
跟刚才是不是一模一样啊,没有太大区别,那咱们把这个啊,我就快速给它复制一下啊,因为都是一样的。小D位置。第一步。我们就是封装这个参数啊,第一步,然后第二步。发送。HTTP请求。这个啊,咱来发送一下。发送方式就是直接new一个htp client,然后我们叫client,等于new上一个在里边加上你要请求到微信那个固定地址,现在我们查状态地址是这个地址。跟刚才不一样啊,这是一个微信的固定地址。这个咱们拿过来,然后这个做到之后,咱下面需要项里边设置参数,参数也是变成一个参完的格式,还是这个格式,然后用这个微信工具类向里边来做这个转换,就这个方法啊,在里边两个参数,一个是map,一个是咱用那个商户那个key,因为他要用key对应它做个加密,也就是这个值。
13:15
啊,这个咱给他穿过来。这个啊,咱写的方法,然后这里边有异常,这异常我给他写一个take catch。啊,Try catch catch里边符合它那个exception。然后把这个代码咱给头复制进来。这个啊是我们写到的,然后写完之后咱往下做,因为现在请求呢,它用的是HTPS,所以咱需要做个设置,HT比S的值等于这个处,这个啊设置完了,设置之后最后再来发送,就用这个里边的后方法做个发送。这是我们发送请求,然后发送之后第三步我们就是得到返回的内容。
14:03
啊,就是得到以请求返回的内容,那我们来一个可里边的get content得到内容内容,我刚才说过它返回那种啊,是一个叉L格式,咱需要把这叉格式那种给它转换成一个map集合,然后最终给它再返回就可以做到啊就是这么一个结构啊,我把这个。直接复制过来啊。是咱们说到的啊,先给它转成map,然后再进行返回。所以这个就是查询咱们这个。支付状态的这么一个方法,把它我们就完成了啊,如果这个有异常,那我就直接给它,呃蕊存一个空的啊,或者说你直接抛异常。个写完了啊,写完之后我们再看一遍啊,然后再写这个这个方法,这个过程就是第一步,我们先设置需要的参数,参数是固定的,包你微信ID,商户号,订单号,还有这个随机的这么一个字符串,然后设置之后发送请求,这是固定地址,把你请求参数变成个叉买,并且用这个商户key做个加密,加密之后发送得到你的那种,得到那种呢,是个叉L格式,咱把叉M格式变成个map集合,然后最终给他返回。
15:19
也就是在我们这里边。得到的就是这个返回ma集合,在ma集合中有很多内容,比如咱会底吧,我看一下啊,主要咱是看这个内容,因为这个内容中呢,它包含你目前的支付状态,如果他的状态是success,那就是成功,如果不是这个状态,那就是失败啊,就是支付中或者说失败。这个啊,我们把这方法就完成了,给大家就能快速写出来啊,然后这个写完之后,咱再写下一个方法,这个方法做什么呢?就是添加你的支付记录,并且更新你的这个订单状态,也就是向咱这个paylog表中加一条记录,然后在你的订单表中把这个C塔的值变成一啊主要就是做这么点事情,那咱最后啊,把这个我们就来写一下。
16:09
咱看这怎么做啊,咱先大概看一下啊。各位看啊,因为现在呢,在我这个方法中呢,我们是传了一个map集合啊,就这map集合,而map集合中呢,其实它包含了有这么一个信息,就是这个信息。叫out trade no,这个信息呢,是我们那个订单号,所以咱们在里边先把这个值得到,然后根据订单号能把订单信息查出来,查出来之后下面可以做这相关操作啊,包括里边这些内容最终加还是你做更新都可以做到啊,这是我们这个接口啊。然后一会儿咱给他写出来啊,对,这节课我们先写到这里啊,也就是这节课咱主要做的就是第一个生成微信支付的二维码,这个我们给它完成了,主要是这个结构可以给它好好去看一看啊,里边比较特殊的是用叉L这个传输的这种方式。第二个当我们支付之后,咱可以查状态,而状态里边我们写了第一个方法查询它目前状态,这个返回是一个map集合,Map集合中有很多数据,而它其中有一个数据就是判断你目前是否成功。
17:20
如果他的值success就成功,如果不是success,要么失败,要么支付中。然后咱们下节课就来写这个方法,添加支付记录,还有更新支付状态啊,所以这节课主要把这接口我们写了一大部分,下一课把它完成,然后咱再做那个页面的整合。
我来说两句