00:00
就下面咱们把这个生成微信二维码的接口我们来做到,那我在里边给大家来写一下啊,咱看这怎么做,首先呢,咱要做这个微信的循环操作,所以这里边呢,它也需要引入微信支付里边一些相关的依赖,咱之间是没有引入,现在我们把它需要引入一下啊,这是我们要做的这个步骤。然后写到D位置。就是咱需要引入你做微信。支付的一些相关的一些依赖。因为一赖引入之后,里面有些功能,它里面都有工具类在用的话更加方便,那这一赖我们给它引入一下啊,来到我的课件中,应该是在这个位置,就是零二里边在零二中等。这个地方咱把这依赖给它就做一个引入啊,也就是这两个依赖,那我把它复制到我们这个service order这个破文件中。把这个拿回来,然后两个依赖我们看一下啊,第一个依赖你看这名字叫微信配,就是微信支付SDK,用的是0.03这个版本,然后下面这个叫fast Jason,咱之前用过是一个Jason转换工具,所以他目前需要有这么两个依赖啊,咱给他直接付过来就可以了。
01:20
这是我们刚才做到的啊,然后引入之后,下面咱们就继续写咱这个代码部分,把代码写下啊,当然这个依赖第一次引入它肯定会联网下载啊,就可能会失败,你把我那仓库里面内容直接复制可以了,就到这个包中com get微信支付啊0.0.3。然后这个做到之后,咱来到这里边,我们来写一下啊。首先我先来一个TRYK啊,因为这边有异常,把异常给它捕获一下啊。Try catch。Catch里边就直接捕获它那个exception。这个啊一个结构,然后在里边我们要怎么做呢?我把步骤给大家写一下啊,首先第一步咱先根据我们的订单号。
02:07
先查询出你的订单的信息,就根据这个把信息先查出来,因为咱后面有需要,这是第一步,然后第二步操作,咱们就是使用一个集合叫map来设置,咱们生成二维码。需要的一些参数咱用map来设置,因为map后面转更加方便,这是第二步,然后第三步咱们就是发送这么一个叫htplan请求。向这里边来传递我们的参数,但是它的参数需要是一个叉L格式的这么一个参数,就是把咱map变成个叉格式给他传进去,最终就是第四步。写一下啊,第四步咱们根据请求,就是得到我们发送请求返回的这么一个结果,所以这个请求呢,咱们请求的也是那个微信。
03:04
支付提供的一个固定的一个地址,跟咱之前做那微信登录差不多,也是一个固定地址,然后请用之后得到他请求返回的一个结果,然后咱们从结果里边可以得到我们需要的数据,把数据给他最终吞就可以了,这是咱们一个基本的一个步骤,那我下面按照步骤把这个我们来最终写下啊,首先第一步根据订单号查询订单信息。因为咱是查订单嘛,而这是在支付,所以咱把那个订单的service给它先注入进来。Out,我们来一个private啊,叫这个order。Service,这是订单的service,然后写完之后在里边做查询,根据订单号查询,那我们加一个条件,就写一个叫。Query rapper。加上这个叫O。然后里边加个rapper,等于上一个query rapper。
04:05
这个啊,我们的第一步先用这个对象。嗯。然后拟完对象之后,向rapper里边设置它那个条件,因为咱们是根据订单号进行查询,那我们看一下订单号那个字段的名字,就这个叫O_no把这个咱给它输过来啊,刚才写过类似代码,然后把这值我们给它直接就转过去。说完之后我们调方法,Order service里边这个查询的方法,因为就是每个订单它肯定是固定的一个,它不能有重复订单号,我们来一个。Get one里边传这个rapper,传完之后返回的就是我们这个订单的这个对象啊,我就叫order。这是我们的第一步把这个查出来,然后查完之后第二步咱需要使用这个map即可设置一下生成二维码的参数,这设置里面的参数是比较固定的啊,那我就写一个加的,咱就复制啊,我先妞一个ma集合。
05:08
就是哈,因为用map后面咱给它转叉L方便啊,用别的也可以,就是这一步不方便,那我们写个map,然后像map中。设置它的值就加个put,它的值有很多。我就写一个啊,比如说有一个叫PID,就是咱们那个做微信支付那个ID址,也就是我在工具类中提供的。这个值啊,这是固定的,然后这个值呢,就是这些值你也可以写到那个配置文件中,然后写个工具来读取,我就在里边直接写了,各位把这个完善一下,就按照咱之前过程,你写个工具类,把它放到配置文件中,读取配置文件中的内容,然后给它取到啊,都是一样的,我就直接这么来测试了,这是第一个APPID,就是微信支付的ID,然后还有其他纸都是固定几个,我就从课件中给各位不过来了。
06:03
啊,都是这么几个值,那我们找到啊。就是还有里边的。这几个值,我把几个值都复制过来,然后咱们来具体说一下啊,这几个值都是什么意思啊,咱们看啊。这里边第一个值微信ID,就是那个支付ID,第二个值,注意前面就是括号里边的名字都是固定的,这些名字不能改,右边这个是你填的值,左边括号中是固定的名字,第一个是微信ID,第二个是什么呢?是咱们刚才看到里边的。就是你的商户号啊,这也是每个人都是唯一的,就是你每次申请每个账号都唯一值,这两个是固定的,然后第三个这个东西这是什么呢?啊,你注意啊,这里边我们用了一个工具类,叫微信配us,这是咱们引入那个依赖中有的这么一个工具类,然后把这个给它依赖引入,然后这是什么呢?你理解为这就是生成一个随机的一个字符串,让你每个那个生成二维码都不一样,这是用它工具类生成一个随机的字符串啊这是第三个,或者我自己生成也可以,但是我们用微信的规则肯定更加完善。
07:15
然后第四个叫包底。Body是不是有体的意思啊,这里边写什么呢?一般写你那个就是比如你的课程的名称,或者你生成那个二维码中要写什么名字,我这里边就填一个order中的课程名称。然后这里边还有一个值是它,这是什么呢?就是你那个二维码中那个唯一一个标识,咱一般填写我们那个就是订单的号或者订单ID啊,这是两值,我写一下啊,这是我们那个课程的标题。或者说名称,然后这个填写咱们的订单号。订单号,然后除了他之外还有这个值,这很重要,这是什么呢?就写你那个二维码中,你那个订单的一个价格,写价格,但是它的价格对于我的写法啊,里边有个特点。
08:08
咱看看地方啊,因为现在呢,我订单中的价格,我们用的是这个类型。这类型是什么呢?就是一种针对价格一个对象,它能做到那个圆角分的效果,所以咱们用这个类型,但是你在用的时候需要把类型做个转换,要变成一个,你看这是什么,先变成浪,然后变成一个字符串啊,给它传的这种形式是一个固定写法,把你的价格变个字符串,按照这种形式做个转换。然后下面还有一个是你现在进行支付那个IP地址,因为咱是本地嘛,所以我写上它,如果你在实际项目中,那这里边肯定加上你项目的域名,假如我现在我这项目是3W点百度点com,那我就加一个百度点com啊,但是因为咱是本地,所以我加上127.0.1啊,这是一个值,然后下面还一个值,这个值咱暂时没用到,它是什么呢?是你做那个回调的一个地址,就支付之后做一个回调啊,但是目前我们这个没有用到啊,咱就放到这里。
09:10
然后还有最后一个这个值。这是什么呢?是你那个支付的这么一个类型,因为咱们现在你看这个类型啊,叫native什么意思呢?就是我现在根据这个价格生成个二维码,然后做支付,这是我们目前做的一种类型,根据价格生成二维码,这叫你的这个生成二维码,这个支付类型里边这些值,而这些值中呢,我们在操作中需要各位改的,也就是里边这个。标题订单号包括价格,包括你的这个啊,其他地方应该基本上都是固定的,包括订单号这些啊。包括这个商户号,什么这个微信支付ID,这是我们拼接上这些参数,在我们生成二维码的时候,这些参数我们都需要啊,所以各位把这改就可以了,改成你的值就足够了啊,这是我们的第二步。
10:01
然后这步做到之后,我们看第三步,第三步干什么呢?我们就需要发送一个HTP可烂的请求,在里边来传递我们的参数,但是它的参数需要咱们把这段参数变成个叉L格式进行传递,那咱们写第三步啊,大家看怎么做啊。这个做法就是呢,我在这个这15的源码中给大家写了一个工具类啊,就是AP工具类,那我把这工具类咱就直接复制到我们这个项目中来啊,直接复制过来我就放到。U中。用这个工具类啊,然后复制之后,我们大概看一下里面内容啊,就是这么一个基本的结构,然后这里边跟咱之前工具类啊就有一个区别,我在里边呢,给各位加上这些方法,主要是为了转换这个叉L格式,这个方法就是set叉L啊,跟之前不一样,所以你用我新的这个工具类,不用之前那个,因为之前里边没有这个东西。
11:00
那这工艺类复制之后,咱下面做一个请求,那怎么做,给大家写一下啊,咱做法就是我们先扭上这么一个htp client,用当前这包中的every client,然后咱们先一个啊,我叫client。等于上一个htp client在这里边传入你请求的那个微信进行二维码生成的地址。这个地址呢,是一个固定的地址,那我就到课件中把这地址复制过来啊,就是这个地址是固定的,是由微信听出来的。不需要我们去记啊,把这个拿回来可以了,然后这个拿回来之后,咱下面就是向这个请求中设置我们的参数,但是我们设置参数就要设置一个叉L格式的一个参数,那怎么设置呢?我们看到啊,刚才在里面有个方法叫set叉l pable是我写的方法,所以咱们用这个方法设置你的叉L格式数据。
12:04
那我来设置啊。点site叉,然后在里边呢,咱就用到微信的工具类,把咱的map集合转换成叉买,但是这里边还需要传递到你那个微信支付这个商户key,因为每个人他那个格式都不一样,就是这个是干什么的,给大家说明啊。就是咱们发送请求的时候,我是不是要传参数,而参数咱是不是要做一个加密,你可以理解为它就是用这个商户key对应的参数做一些加密处理,让它更加安全啊,主要是这个目的,那我们来写一下啊,这个做法在里边用工具类,就刚才咱们用的这工具类应该叫微信这个pay us。里边有一个方法,这个方法叫这个方法。Single叉L应该是这个啊这个方法,然后在方法里边呢,我们有两参数,第一个就是我们那个map集合,第二个是你的商户的key,根据key对你这个map集合转成叉L做个加密。
13:11
啊,也就是把这个咱复制过来啊,这是固定的,不能随便写啊,必须写我这个K,因为每个商户都不一样。所以这个做了设置,然后这个方法大家看啊。新的叉L就是把你的map根据它做个加密,并且转成叉L格式传到你的请用中去啊,这是比较特殊的地方啊,这是微信支付的一个特点,然后这个做到之后,咱最后就可以发送请求进行实现。啊,但是里边啊,应该还需要一个设置啊,咱设置这个东西就是它。我们写一个叫处。这什么意思呢?你注意啊,我现在访问地址是不是叫HTPS,默认它不支持,需要来个处它才支持啊,就支持你的HTS访问,在里边能发送请求,然后都做好之后,最后咱就执行这个请求发送。
14:05
那怎么执行,在这个里边有个方法。你是get或者posts啊,这里边我用一个post条方式,用它来发送请求,这样的话这个发送就完成了,我们就这么来做啊,所以各位把这个知道啊,设置你微信地址,然后对叉L做个加密,最终设置它用hps请求,然后最后用POS发送,这里边必须是post啊,因为这是它规定一个做法。Host,然后这个做到之后来看最后一果,最后一步呢,咱就可以得到我们请求之后返回这个结果,就是通过client得到你请之后的结果,在结果中有咱们想要的那些数据啊,那我们来得到一下啊,看看怎么做啊。里边呢,有一个方法叫get content,看这方法。Content是不是有内容的意思啊,它就表示得到你返回的这么一个内容啊,那我们给他得到一下,就是最终有一个string是你的内容,然后这个内容给大家强调啊,里边有这么一个特点啊。
15:13
就是他这个返回的内容。啊,返回的那种是使用叉格式给咱返回的,也就是说我这个子润里边这个content是个叉格式。而叉L格式如果咱要传到页面肯定很不方便,因为里面数据不好解析,所以咱怎么做呢?我们一般做法就是咱们可以把这个。叉L格式给它再转换成一个map集合,然后咱把这map集合给它返回回来,这样的话取值更加方便,因为咱这方法最终返回也是一个map啊,这是一个比较特殊的地方啊,我再说一遍啊,它的特殊点就是第一个你传参数需要传个叉M格式,第二个返回参数,它也是返回叉M格式,咱需要把叉M格式变成麦克返回,这样的话会特别方便,那咱给他就最终变一下啊。
16:12
我先来一个。Map集合,比如来一个泛型吧,缀。Object啊,或者润润啊,都是润类型的,都来类型,然后里边我写一个叫。Result map等于new上这么一个哈希map啊,先new着map集合,然后new完之后呢,在里边呢,咱就把这个叉转换成外部集合,那怎么转?我直接这么写啊,还是刚才那个工具类微信配us。它里边有个方法,这方法应该叫这个发兔map,就这个啊。你看这个方法命名很规范,就是把你的叉买转换成ma集合。就是这么来做的啊,所以这样的话,我们就做了转换,在这个result map中有咱们需要的数据啊,这个就可以了啊,然后都有之后,最后咱给他做个返回,但是返回的话我强调啊,因为在result map中呢,确实有数据,但是咱这里边啊,可能其他数据它里边并不全,因为咱们数据中需要这个二维码的地址,包括需要你那个返回的结果,另外还需要什么价格,什么课程,什么订单等等,这些数据后面咱都需要,所以里边数据并不完全。
17:28
那咱最后就重新做封装,然后把它返回。我再说一遍刚才这句话的意思啊,现在我们发送请求,它有一个result map里边会包含在那个二维码的地址,但是咱们在页面中,咱们不只需要二维码地址,还需要其他纸,比如说咱们看这个页面中。你看二维码那个页面中。大家看到啊,比如这个页面中的咱可能还需要什么订单号,或者说你订单的那个课程的名称等等,或者说你订单价格里边我们还需要进行显示,所以说我们现在再到的map里边,它没有这么多的值,所以咱为了把这数据让它显示的更完全,我们就重新再请麦部集合,把咱需要书记都给它封装,最终再返回。
18:15
与主要二维码信息,但是咱还需要加信息啊,那咱们写下啊,就实现一个最终。返回数据的一个封装,咱们来最终封装一下啊。我就写一个,呃,Map等于谬上一个。哈希map,然后像map中放他的那些数据啊,就是放里边纸,比如咱需要那个二维码包括什么。什么订单ID,什么名称等等啊,这一部分我就从课件中复制了啊,就是里边几个值就可以了啊。好吧,这个咱就直接拿过来啊,就向里边put值就可以了。这部分。这个啊,给大家复制过来,然后咱们给他改一下啊。
19:01
我们看啊,第一个值就是那个订单ID,就是订单号啊,第二个值是你的那个课程ID,包括这是价格,然后主要是这两个值很重要,这个值是你那个通过我们这个。就是发送请求二维码,它返一个状态码,然后第二个是你那个二维码那个地址。我写一下啊,这个是返回二维码,它那个操作的状态码,比如说你是什么200什么状态码啊,他把这个会返回。然后还有一个值叫code的ul,这个值是你那个二维码的一个地址。所以咱们主要这两只啊,但是这些我们在页面中显示也需要,然后这些都选完之后,最后我们做个屡退。就是吞一个map,把这个摆回就可以了,如果说它有异常,那我们给他直接就呃,直接就抛出一个异常吧,子肉妞一个鼓励。
20:02
Exception。这个啊,我们就做到了啊,然后把里边的值我写一下,比如说20001。然后这个啊,比如我们叫生成二维码。失败。这样的话,接口我们就就做到了啊,这是我们写的这部分,然后这接口我们再看一遍啊。在这里边我们的做法就是在CTRL中我们得到的是订单ID,最终把一个map里面包含咱需要信息,包括二维码地址还有其他信息。在S里边我们过程就是先根据订单号查询订单信息,然后设置我们要请求这些参数,参数这些是固定的,然后咱们用H按发送请求,但是请求参数需要咱们给它变成这个叉,L格式是它一个固定特点。变完之后返回结果,它的结果也是个叉格式,咱需要把XL变成我们的map集合,然后从map中把值取出来,最终给到返回,这些值是咱后面需要的,比如说订单ID啊,包括课程ID,包括你的二维码地址,然后后面在页面中是需要进行显示的,这个啊,我们把接口就完成了,主要这么一个结构。
21:18
所以各位啊,按照结构把这能给它整合出来,这结构应该是也是一个比较固定的过程啊,但是要求各位能把这个给它做到啊。所以咱们完成了这么一个生成微信支付二维码的这么一个接口,这个啊,咱就做到了啊。
我来说两句