00:01
各位同学大家好,到现在为止呢,我们已经完成了挂号订单的功能,在挂号的详情页面中,最后我们点击里边这个支付是不是要进行订单的这种支付,所以咱们下面就开始完成订单的支付功能,而我们目前的支付能咱们采用微信支付的方式把这功能做个实现,那支付功能我们要怎么实现呢?首先给大家介绍一下我们支付实现的一个基本过程,然后咱们再编写代码把这功能做实现。那我们来看一下这功能怎么做,我在图上给大家画一下,首先第一部分我们在这个订单的详情页面中有一个按钮叫做支付,当咱们啊点击支付按钮的时候,我们要怎么做呢?大家注意刚才我提到我们用的是不是这个微信登录。所以说我们点击支付的时候,我们要做法就是是不是要生成一个微信支付的二维码的,咱们要做这个事情,所以我写一下点支付的话,我们就要生成微信支付的这个二维码,这是我们做的事情,一会儿咱会编写接口,把二维码生成,然后生成二维码之后,咱们下面做的事情是不是要进行支付,就是咱们用手机微信一扫描,然后咱们完成支付。
01:30
微信进行这个。扫码支付,然后支付之后呢,大家注意,因为咱们支付这过程最终一支付微信那边是不是知道我是支付成功或者支付失败,所以说这个过程中呢,我们要做件事情,什么事情呢?咱们就需要去查询一下这个微信支付的一个状态,也就是查询咱们当前是成功还是失败,这里边我们要做个查询,也就是说你完成支付之后,我们一会儿要写个接口,接口中来查询支付的状态,这状态可能是这么几种状态,包含这个。
02:08
支付中。包含支付成功,还有这个支付失败,如果说咱们查询是支付中,那我们就处于等待的状态,如果说是支付失败,直接返回错误提示,如果是成功,那我们跳转到页面显示说这个订单已经完成支付,所以咱们现在就来做这个功能,那这个查询这个状态我们该怎么去做呢?给大家说一下啊,这个做法有很多种方式,而我们现在采用这种方式,比如说咱们现在在我这个微信二维码,这个订单进行页面中,当咱们一支付,那支付之后怎么做呢?咱们就可以实现,比如说我现在每隔一段时间去调一次这个查询。支付状态这个接口,比如说咱们每隔三秒去调一次,看它是否成功,因为你支付之后可能还没有马上成功,咱需要等一会儿,所以我每个月的时间去调一次,直到它成功为止,如果一直支付中,咱就等待,如果成功的话,咱们返回到我们的页面进行显示,如果失败提示他支付失败,所以现在我们的过程就实现这个操作,但是操作中咱们这里边还有一个过程,就是在这个时候大家注意。
03:26
当我们现在呢,支付成功之后,那这个时候我们需要怎么做呢?大家想一下,支付成功之后,咱是不是要去修改一些相关的状态呀,那给大家写一下啊,我们要做这几个事情,第一个事情来更新咱们这个订单的状态,因为订单状态就是大家看咱目前状态是不是叫做未支付,那咱们改成是不是已支付状态,这是里边的第一步操作,然后第二步呢,我们做件事情,咱们向那个支付记录表里边添加这么一条记录。
04:03
也就是在我们表里边有这个表。叫做payment,然后在这个表里边我们添加这个支付记录,就是payment info里边把支付记录加进去,当然包含它的状态,然后这个做到之后第三步咱们再去调用医院那边的接口,然后实验这个订单的状态的这么一个更新,或者说订单。信息的更新,因为医院那边要知道你现在已经完成了支付。所以这个是咱们做订单支付中一个基本过程,我们一会儿按照这个过程咱做个实现,那这过程给各位再说一遍,然后咱们来并写代码,首先第一部分我们在订单的健康页面中点击支付,咱们要生成微信支付的二维码,然后生成二维码之后用微信一扫进行支付。支付之后呢,咱们做法就是每个月的时间去调一次查询微信支付状态接口,如果说是支付中我们等待,如果失败,咱们返回错误信息,如果说支付成功,那我们跳整到页面显示的内容,但是支付成功之后,我们要做这么几件事情,第一个更新订单状态,让它是已支付,第二个。
05:22
支付记录表中添加记录,第三个调用医院接口,实现订单信息的更新,所以这是我们要完成这个过程,而这过程中呢,我们要编写这么几个接口,包含这个生成二维码接口,包含查询状态接口,以及支付成功之后里面这些相关的接口,这个咱们一会儿进行实现,所以这是关于对这个过程的一个分析,大家知道目前的一个过程是怎么样的。然后这个分析之后呢,咱们下面就开始编写这个接口,首先我们先写第一个接口,这个接口咱们先生成一个微信支付的二维码,把这个给他做到,那我们看这个该怎么实现,而这个过程呢,因为咱要用到微信支付,所以给各位先做一个基本介绍,关于微信支付介绍,那我们来看一下啊,咱们现在做的是微信扫码支付。
06:22
如果你要用这个微信进行支付,首先我们需要进行申请,申请这个就是操作这么一个资质,但是申请呢,这里边需要你是一个企业的身份,通过营业执照,然后认证公众号,提交一些相关信息,当然经过一段时间,然后他给我们审核通过,咱才能够进行这操作,然后这个审核通过之后呢,他会给我们下发这么几个值,然后咱看一下啊,这里边有一个配置文件。就是这几个值包含你这个公众号的APPID,包含你这个商户号,以以这个商户的key,就是进行加密的这么一个key,需要这几个值再进行开发,这是我们申请成功之后,由微信那边下发的内容,所以各位得知道我们这里边已经申请过了,然后给大家会提供出来这个相关的这些ID密钥等值,再用它进行咱们的微信相关功能。
07:19
这里边啊,咱们在微信中我们要用的话,需要引入一个依赖,就这个微信配SDK,然后里边会用到微信中一些相关的工具类,比如说获取字符串,转换这个字符串。等等,基本不具备,这咱一块儿进行使用,这些都是由微信给咱们听出来的,所以这是一个基本介绍。然后介绍之后,咱们下面就来开发我们这个第一个接口,生成微信扫描的二维码,那开发接口的时候呢,咱们先做一个最基本的准备工作,首先我们这个因为是支付功能嘛,所以咱把这过程呢,就写到我们里边这个service o的模块,那在模块中呢,首先第一部分我们先引入微信支付的这个相关的依赖,把依赖先引入,然后依赖就是里边的这个依赖。
08:14
叫微信配SDK,那咱们引入这是里边的第一步,然后这个引入之后,我们进入到第二步,第二步呢,在配置文件中加上咱们微信操作那个ID商户号,还有它的相关的key的这个值,然后再加那个ready配置。因为咱后面我们要让你生活二维码,比如让它两个小时内有效,超过两个小时就无法支付,所以咱通过radi把它做个处理,所以在里边引入这两段新闻配置,那我把这两的配置复制到咱们这个项目的配置文件中来。我在里边做个复制。就是。这两个值一个是red,一个是微信相关这个ID,商户号,还有商户的T,这个我们就复制了,然后复制之后下面我们进入到第三部分,因为现在这些值呢,咱要使用,所以我按照咱们之前写过的方式,咱们也是建一个工具类,然后让工具类在加载的时候就去读取配置文件,为了咱们后面操作方便,当然在里边大家用到一个工具类,为了一会儿调用方便,就是这个HT可工具类,那这两个工具类我就从里边给各位复制过来了,一个是读取配置文件,一个是HTP工具类,这是咱们的第三步引入工具类。
09:41
那我现在在这里边,我们给他建一个包。这个包我起个名字就叫做。YouTube,然后YouTube里边呢,创建第一个类,第一个类呢,读取配置文件中的相关内容,那我现在把这个类我就直接给他。
10:03
复制过来就是里边的这些内容。咱给他拿过来,然后对照值,我们给它先引入依赖,然后给它改成我们配置文件中的一些相关的名字。给他拿过来。这是相关的依赖,然后咱看一下啊,里边有这么三个值,ID密钥和这个商务key,然后它叫微信点APP。我这里多了一个PA,然后把这都去掉,都改成微信点什么什么这个值。然后咱们看在我的这里边。它就是读到配置文件中内容,然后用常量做个赋值,后面我们就可以进行使用,这是第一个工具类,然后除了这个之外,在里边我还提供了一个进行HTTP操作的工具类,那这个工具类我给它也是直接复制过来。咱们建一个HTP,然后在里边我们复制它相关的这些内容。
11:06
我把这个给他直接复制一下,这为了咱们一会儿进行使用。然后现在两个公寓类我们就准备出来了。这个我们就做到了,然后做到之后呢,我们继续往下进行,下面呢,咱就开始开发它的接口部分,包含创建它的controlr的service和它的micro等等这个内容啊,当然这里边还一个值,这个值我们暂时没用到,我先给他啊,先来一个空的,后面咱给他再完善出来。啊,先来一个土豆,就是需要改善。所以现在啊,这个都可以了,这个可以之后,下面我们就来创建它的controller service,包含它的map,那咱们先来创建它的controlrler,因为咱做的是微信的嘛,所以我这CTRL起名我就叫微信controlrler。
12:04
在里边我来创建一下啊,我写到这个位置。微信CTRL。然后在CTRL上边快速加上它相关的注解,这各位应该很熟悉了啊。ctrl request mapping request mapping中加上它的行文内容。我们就叫API微信杠啊,API咱叫order,然后这个微信。为了咱这个就是网关能够使用,然后写完之后在里边我们要注入这个service,那我在service里边把这个创建出来,咱们首先建一个interface,我们就叫微信service。创建之后呢,我们再来创建它的一个实现类,那当然里边也创建实现类,我们叫微信service l PL。我写到这个位置。
13:01
这个创建出来,让它实现我们这个微信service,然后在这个时间内上边加上一个service注解,这样的话,这些准备工作就完成了,完成之后呢,我们来写这个接口,在微信CTRL里边,首先咱先注入这个微信service。Auto private微信service,然后下面这样一个方法就是生成微信支付扫描到。二维码。那这方法我给它起个名字,比如咱用get提交,然后里边加上一个名字,比如我们跟课件中起成相同的名字了,啊,我的名字叫这个create native,然后根据我们的订单ID生成咱们微信扫描的二维码,这是写的一个地址,下面加上咱的方法public result,咱们叫create。
14:03
Native,然后在这个方法里边得到咱这个订单ID,我们用这个pass这个注解。然后得到这个ID啊,咱来一个浪类型。O的ID。然后得到之后,下面呢,我们就来调用service里边的方法,把这个最终生成下。当然这里边呢,给大家强调啊,就是这个微信的生成二维码,咱们需要去调用微信那边提供的接口,把这个做到跟咱之前做的微信支付有点类似,而微信那边的接口给咱们返回到并不是直接是一个二维码,而是很多数据,咱在这些数据中呢,有一个数据部分是一个地址,通过这个地址能直接下载出来这个二维码,所以它反而有很多数据,而很多数据呢,为了咱方便,所以咱们可以用一个麦克集合给他得到。
15:00
所以这里边我来一个O的ID,然后让它返回到就是一个外集合。最终咱把它做一个旅退。result.ok加上这个map,所以这样的话,咱们把这个CTRL我们就写出来了,因为这里边有很多值,咱用map集合进行接收,然后写完之后下面再来创建这个service。在里边方法去定义,然后来到它的实现那种实现类里边实现它,最终这方法咱们就是完成这个生成微信支付扫描二维码的方法。那这个方法怎么做呢?给各位强调啊,首先第一个,因为这里边呢,我们现在传的一个参数是这个订单ID,所以咱们根据订单ID是不是能得到我这个订单的相关信息啊,咱可以把这信息给他得到,然后得到之后这里边我们去封装一些参数,封装参数之后去请求微信那边一个接口,最终把这效果可以进行实现。
16:11
那这里边我把它给各位来写下哈,大家做个实验。首先写下步骤啊,第一步咱们先根据我们这个order ID获取一下我们这个订单的这个信息,为了咱们操作方便,而获取信息呢,咱要用到那个order service,所以我把它先注入进来。我们加上这么一个叫凹凸曼。然后我们加上一个叫。Private。Order service order service,咱们调用order service里边的方法,把这个数据给它得到,那我们来调一下啊,我们就写一下order service里边这个方法,这个方法应该叫这个get白地里边传入。
17:06
Order ID最终返回的是这个order这么一个对象啊,咱就叫order info或者叫order。这是我们根据ID得到,然后得到之后呢,下面咱就来封装里边这个相关的这些操作,咱们做一个封装,然后最终去请求咱们的相关内容。但是这里边各位注意啊,因为咱在支付的时候呢,刚才我提到我们这里边呢,就是还要做件事情,我们要记住这个就是支付记录表中加一些数据,就是咱们在生成二维码的时候,可以先向里边加一些数据,然后后面支付成功之后往里面再更新数据,或者说你最后再添加都一样,那我现在就在这个位置呢,咱们像这个支付记录表中先加一条数据,告诉他我目前支付信息是什么样的,我们可以做这么一个操作啊,那我写一下啊,就是第一部分得到这个订单的信息。
18:01
第一步。然后第二步呢,我们可以向这个。支付记录表里面添加你这个就是。记录或者添加你这个信息,也就是像这个刚才看到的这个表中加信息,那这个表里边呢,我们可以加一下啊,但是加的话我们需要调用另外一个service,包括它的map,所以咱给它先创建出来,我在里边建一个service。然后咱起个名字,我就叫这个payment,然后这个service。这是我们做的一个创建。然后创建之后,我们让这个service他去就是继承另外一个接口,咱们可以参考之前的这个写下啊,因为跟这个基本类似,继承它。然后里边我们传入一个实体类,就这个配。Went in for,这个啊是我们model中引入的,然后写完之后呢,我们写上它这个实现类。
19:08
在里边我来创建。我们叫ipl,然后让它也是同样的方式继承,还有这个实线,咱们参考这个给他快速改一下啊就是。这么一个写法。我把它。拿过来啊,咱们写到这个位置,让它继承我们这个service m PL,然后后面我们加一个payment map,后面咱来加,这里边加一个payment。Ino。然后后面让他实现咱们这个接口。就是payment。Service。这样的话把这个结构写出来了,然后在service上边我们加上一个service这么一个注解,这个写完之后,最后我们来创建它那个map。
20:00
在这一边大家给它快速创建出来啊,Map是一个interface,然后咱们让map继承一个叫base map。Base中加上咱那个就是这几类payment。然后把这个依赖我们给它引入,所以这样的话,这个service map就写出来了,写出来之后呢,在里边我们加上这个接口,就为了咱们微信这边使用这个接口做的事情,就是向支付记录表中加上咱们相关的这个数据。而这数据呢,其实大部分在order中应该都存在,那我这里边给它来写一下啊,咱们把它注进来,我们来一个play play。然后叫这个payment service,咱们调用payment service里边这个方法,我们叫这个。Payment。Info这个名字,然后里边我们传入这个order啊,就是它这个相关这个信息。
21:07
Order,呃,这个方法改一下啊,Order,然后传完协议之后呢,这里边应该还有一个那个支付的一个状态,那这状态我们看一下啊,应该有一个枚举类。那我们找一下啊,应该是这个payment。CS枚举,然后在里边有这么一个就是支付的状态,我们来找一下啊,找一下这个枚举,呃,应该是类型,我记得应该是tap啊。想看是不是这个啊。你看这个啊,Ta中有一个类型叫微信啊,就是你的支付类型是微信支付还是支付宝支付啊,咱直接传这个值,然后咱们得到里面那个就是。点get。CS啊,到它的具体值,包括咱到里面看一下,其实就是把这个怎么到得到你那个支付的类型,你是微信支付还是支付宝支付,或者咱们操作方便。
22:02
所以现在把这个就写出来了,然后写完之后,我们下面在service里边把这方法创建出来,就是向支付记录表中添加我们这个。记录或添加信息,这一个写完之后,我们来到它的实现类中,在实现类中把这方法咱们最终给他做个实验,就是做一个最基本的一个,就是一个添加操作啊,没有什么特别复杂的东西,那咱们在里边给他就快速写下啊,我们写这个操作。那这操作怎么做呢?应该说并不难啊,咱的做法就是首先我们向里边就是支付记录表,咱看一下啊,其实就是这个表叫payment info,然后这个表中大家看里边有它的一些相关信息,包含它的编号,业务编号、订单ID,支付类型,交易编码、金额等等内容,咱就像这个表中来添加它的数据。
23:03
那下面我们把代码实现一下啊,因为咱们加的话,我们同一个订单向里边是不是不能重复添加呀,所加之前我们先判断看我的订单在里边是否存在,如果存在的话,我们就不需要添加,不存在我们来添加,那怎么判断呢?咱们做的是不是做个查询呢?咱看根据什么查比较合适啊,其实有多种方式,首先我们根据我们的实际看一下,因为咱们现在有这个O的这一项,那我们现在根据OID查是不是可以了,同一个订单不能重复根据order ID啊,当然可以再加一个,比如加这个类型,比如你用支付宝或者微信,就是咱根据ID和类型进行查询,如果说能查出数据,咱就不进行添加,不能查出来我们再进行添加,那咱来写下啊。首先第一部分我们先根据我们的订单ID,还有这个支付的类型查询,这个就是支付记录表里边是否存在相同的订单。
24:10
这是我们做的第一个事情,那我们来查一下啊,首先我们写一个Perry rapper里边加这个payment info。然后咱们来一个rapper,等于new上一个快rapper rapper里边的设置它的这个值,首先第一个值就是订单ID,也就是里边的这个O的ID。这个拿过来,然后里边传入o.get这个就是。ID啊,传输它的ID值,然后第二个是这个就是支付的类型,支付类型呢,在我们里边的字段,这个字段叫payment type。这个拿过来,然后支付类型,这里边我们就是这个。Thes,也就是这个值啊,这是我们这两个,然后写完之后咱们调一下方法,那就是base ma中的方法做查询,那这查询的话呢,其实我们用这个set list或者select这个Y都可以,但是这里边呢,其实也可以用这个select count,因为咱们目前的目的只想查询里边有没有数据,并不想得到数据,这个我要明确,所以用它查询,如果说这个值它大于零,表示里边有数据,如果这个值等于零,里边是不是没有数据,所以咱们用这个查就可以了,那下面我做个判断。
25:36
就是如果说这个count大于零,那就表示这里边有数据,如果说有相同数据的话,那咱们加个re退返回是不是可以的,如果说它没有相同的,咱再做一个就是添加操作啊,就是添加这个记录,那添加记录呢,我们首先用我们最基本方式啊,这应该很容易了,Payment就是这个info。
26:02
咱们先溜上这么一个对象。等于new一个payment info,然后像里面就是set它的这些值是不是可以了,比如说咱们set一下啊,我就写几个,后面我就复制了啊,比如第一个有一个创建时间,那我们就new这个date。就new这个当前时间,这是第一个值,然后其他纸也是第一次往里面塞,比如说我在塞一个值啊,我们写这个。Payment for set,比如说咱们找一个里边这个这个order ID就是订单ID,那订单ID咱们通过这个order。点get ID这个是不是可以得到往里面设置,然后有其他值用相同的方式往里面塞就可以了,那其他值我就看一下我的课件中啊,从我课件中把其他值给它复制出来就可以了,就是里边的。
27:01
这些值我把它都复制出来。然后再给他拉过来啊,咱们看有相同的给它去掉啊,呃,这点应该是相同的。然后里边啊,咱看我们的值,这个是支付类型,我们叫这个。啊,比如咱也叫payment type啊,叫这个写的规范点啊,Payment type,然后下面有这个就是。叫做吹诺,就是我们那个订单的一个编号,然后下面有你这个就是。类型啊,我们看这个啊,这个值先引入,然后咱们看一下这个值,就是目前是一个支付中的状态,就是支付的这个类型,然后最后有一个叫做subject subject是什么呢。给各位来说一下啊,这就表示我们现在支付的内容,什么叫支付内容呢?就是一些支付信息,比如现在你看我这里写的是这些值,这里包含我们的年月日,包含你的医院的名称,包含你这个科室的名称,还有你支付这个就是具体这个名称,比如你看的什么病,里边会。
28:07
然后最终set到里面去,包括最后有你的这个支付的金额等内容,这是我们项里面set值,然后这些值set之后,最后咱调方法,就是咱们调这个base method里边那个insert,然后把这个payment info给它加进去,这样的话咱们把这个方法就完成了,就是完成向支付记录表中添加信息的这么一个方法,这各位能做到应该并不复杂,就是先查询。看里边有没有相同数据,如果有的话我们不进添加,没有的话往里面加数据,这个我们就写完了,然后写完之后咱们下面回到我们那个微信这里面去,就是现在这个位置,我们第二步完成了向支付记录表中加这个数据。这各位给他知道啊,然后做到之后我们继续往下来写,那下面做什么呢?下面咱就需要做件事情。
29:06
写下啊,我们就需要设置一些参数,然后设置参数的目的是为了什么呢?为了调用微信那边生成二维码的这么一个接口,咱需要做这个事情,这里边需要设置参数,而这个参数呢,咱需要有一种方式,做到什么方式呢?给大家强调啊。因为微信那边的接口,他要求咱们需要以这个叉L的方式进行反参数,并且参数需要进行一些加密,用我们那个商户的key,就是加密之后传过去它才能认识,所以咱们需要这么来做,我在里边写一下啊,大家注意啊,这过程不用担心,在微信里边都有相关的工具类可以直接使用,不需要我们单独去设置,但是你知道里面需要做这个操作,咱们需要把这个参数给它转换成叉买lo格式,然后使用咱们那个商户的key。
30:06
进行加密之后才能进行传递,如果你不这么做,那微信那边它是不认识的,那这里边怎么做呢?首先我们需要写一个map集合,把参数放到这个map中,比如说给麦起个名字叫这个PA map PA map等于咱就是谬上一个。哈西麦宝。咱们先创建一个ma部集合,然后创建ma集合,之后向ma集合中设置一些相关的参数,这些参数是一些固定的名字,我们看一下我的课件中,就是我课件中的。这个位置这些呢,都是项里边设置它相关的参数,那现在我把这个给各位复制过来,不需要各位去记,我们用的话呢,直接把这值写正确可以了,那咱们一个一个来看一下这些值到底都是什么,大家看啊,首先里边的第一个值叫APID,就是咱们那个商户的ID。
31:10
咱有工具类得到第二个是什么呢?是我们那个商户里面那个商户号,比如咱们配置文件中的这两个值,一个是ID,一个商务号,这两只需要,然后里面有第三个值叫nose string X tr,它是什么呢?是咱们生成一个唯一的随机的一个字符串,这个字符串呢,咱通过微信配U条,就微信那边的工具类可以生成一个相关的字符串,用这个可以直接得到,不需要我们再写,然后下面这里边有咱们那个主体信息,就是body,比如说我们现在。救人是谁,包括你这个相关的日期是什么样的?然后除了这个之外,还有这个值叫alright no是咱们那个订单的里面那个编码,或者订单那个编号,那我看订单里边啊,其实就是这个值,每个订单咱们当时按照规则是不是正是一个编号,每个订单编号都是唯一的,订单里边就是传这个订单编号,然后除了这个之外,下面有你的订单的金额,这金额特别强调啊,其实正常写我们应该是这么做,得到你当前订单金额,当然为了我们后面测试方便,这个金额统一写成这个值,这个值表示就是0.01元,就是一分钱。
32:24
啊,当然你可以写实际的,咱为了测试方便,都统一写成0.01元,为了测试使用,我这里写一下啊,就是为了测试我们统一。写成这个值。这个位注意啊,然后下面是你当前这个IP地址,因为咱是本地,我就是127.0.1,然后还有一个叫notify ul,是我们回调地址,但是这个暂时没用到。最后一个是咱们的支付类型,我们叫native,比如咱们是微信扫一扫,是不是扫码支付,这个类型叫native,所以现在我们就完成一些相关参数设置,大家对照这些参数写成你自己的对应的值。
33:09
然后这个写完之后呢,下面咱就去调用微信那边的接口,把它做到,那我来写一下啊,就是我们的下个步骤。这个应该是第三步设置参数,然后里边的第四步我们就去调用微信生成二维码的接口,咱们通过HTP。进行这么一个调用,那我们写一下啊,咱就直接用一个http client,刚才我们写的这个工具类,就是刚才这里边这个工具类,然后咱们用htp client,我们就要client,等于new上一个htp client,然后在里边呢,传入微信那边的。地址。这个地址呢,是一个固定值,就是里边的这个值,我把它拿过来大家看那地址啊,叫做A片mch,微信点Q点com,这是微信那边听出来的,然后地址写完之后,咱们向这里边设置它的参数,就是设置我们那个map里边的参数,那怎么设置呢?给大家写一下啊,在client里边呢,我们有一个方法。
34:23
这个方法大家看啊,要set叉L开,因为咱们现在要通过叉L方式进行设置,所以咱们调用里边我们写的工应类中的这个方法,把它设进去,但是叉L怎么设置呢?这里边在微信这个工应类中有一个方法,它帮我们做到了,不需要我们再自己转成叉L,那这方法咱看一下啊,这个方法。叫这个January,然后里边应该叫这个single的叉L这个方法,然后这个方法中有三个参数,第一个参数就是咱们的那个map集合,然后里边的第二个参数是你的加密那个key啊,当然咱们现在用两就可以了,然后那个加密的key咱们通过这个工具类中的这个方法。
35:13
就是里边的这个值。然后通过它我们可以实现这么一个加密,也就是取到的这串字符串,这字符串不是随便写的,是你申请那个微信支付中,由那个微信那边给你下发的一个key,通过它要对咱这个数据做一个加密,包括对你这个map集合,先把它转成叉格式,然后再进行这么一个加密,这是我们写的这么一个结构。然后这里边呢,有一个异常,咱们加上一个开开,比如把这些呢,都给它放到咱这个开开里面来啊,都给它放进去啊。放这里面来。所以现在我们的这个部分就写出来了,然后写完之后咱们继续往下写,现在我们是new了这个client里边传入这个地址,然后下里边设置了参数,然后下面这个位置啊,还有一个值,什么值呢?大家看啊,我这个请求是不是用的HTPS啊,HTS是一种加密方式,默认它是不支持的,咱需要设置一下,就是set,一个叫HTPS,里边值变成数,让它支持这种请求,然后这些都选之后,最后咱们调用凯恩里边一个方法叫POS方法,就是完成这么一个发送。
36:31
这样的话,咱们现在把这个过程就完成了,咱就发送请求,请求微信那边的接口,最终得到咱们的内容,然后得到之后我们进入到第五步,当咱们启用之后呢,由微信那边会返回咱们相关这个数据。啊,相关的数据,他把数据会返回,那怎么返回,在client里边有个方法叫做get content,这是由微信那边给咱们返回的这么一些内容,然后这个内容呢,它是一段叉L格式,注意它返就是我们他要求咱们传的是叉L,然后给咱们返回到也是叉L,但是叉L呢,如果咱要直接拿到页面,我们解析肯定特别不方便,所以咱为了方便可以把叉买lo给它,再转成外部集合,然后再给它传到页面中,会更加方便,那咱给它转一下啊,用这个。
37:29
首先来个注释。转换成这个。外部接口,然后咱用工具类微信配U里边有个方法叫这个叉l to map里边传入叉数据,它把这个数据会咱们转成一个mapb集合。比如起个名字啊,我就叫result map。这样的话,这数据我们可以得到,然后得到数据之后呢,最终咱们把数据做个返回就可以了,返回数据中呢,咱们可以把这个返回,但是里边还有其他纸,这里边是没有,所以咱根据我们的实际把它来返回一下啊,那怎么返回,我们就看一下我的课件中,我们就用这种形式。
38:14
把它来做一下啊,就是把这个返回家。然后咱们看一下啊,就这个部分。这是我们的第六步,封装,返回到结构集在里边,比如第一个我们把这个订单ID给它先返回,因为咱后面肯定需要页面中需要使用,然后包括你的订单金额返回,然后咱们从re map中取到两个值,一个是它的状态嘛,一个叫code的ul,注意啊,这个值最重要,它是什么?是咱们那个二维码的那个地址。这是最重要一个值,包括这个result map,咱们也可以做个输出,后面咱们就是在测试中方便咱们查看,我们叫这个result map。
39:02
啊,比如说我给他。写到这里,后面咱们输出会做个测试,所以现在这些值我们都封装了,封装之后最后我们加上一个蕊退,把这个map做返回,所以这样的话,这个接口咱们就最终写完了,就是关于我们这个生成微信。支付二维码的这么一个接口,这个接口中在map即可中有咱们那个那种啊,就是这个扣L是咱们需要那个二维码的一个地址。咱通过它在页面中可以进行显示,所以现在接口我们就写完了,然后写完接口之后,然后面在前端中把它可以给它显示出来。
我来说两句