00:00
如果有些同学想看一看究竟它底层的Java代码是如何编写的,那么也很容易啊。我们呢,来。找一下最开始我们打印日志的这个地方。还是搜一下我们的。还是搜一下我们的发起支付请求啊,发起支付请求这块好,收到了之后呢,就是在藏在了这个位置哈,好搜到了之后呢。我们来看一下最开始构造签名串这块的日志,它是在哪个类中打印出来的。它是在这个叫做WeChat pay To Credentials这个类打印出来的,那我们呢,就需要找到这个类,好,这个类在哪呢?我们来找他一下。
01:01
肯定是在我们的源码当中啊,所以呢,我们找到我们的external libraries,然后呢,在这个里面呢,我们找到当时我们引入的那个依赖,它应该叫come get up啊,然后WeChat pay AV3好点开,点开之后呢,这个里面有一个包。在当中呢,就有我们刚才的credential这个好,我们打开看一下,打开之后呢,诶,你直接就可以看到这个get方法啊,如果你啊不像我这么幸运,一打开就找到了的话呢,你可以在这个位置去搜索一下它输出的日志的具体的内容啊,这是它输出的日志的具体的内容,然后我们在这个类里面搜,你就会发现它是不是直接就定位到这儿了,那么这个很有可能就是我们刚才日志输出的地方了,那么所以呢,我们可以在这个地方设置一个断点啊,然后前提呢,是我们之前已经用debug的模式把它运行起来了,接下来呢,我们再重新的执行我们的确认支付,好点一下。
02:13
那这个时候呢,他就成功的进入到了刚才我们设置的断点当中,所以我们又进一步的能够确认这块就是在按部就班的执行一个签名生成的过程,对不对。那首先呢,这面他会利用他这个类里面提供的一个工具方法,计算一个随机数出来。啊,这是具体计算随机数的算法,好,接下来呢,下一个步骤这块呢,就是获取时间错的步骤了。所以呢,我们来看这个呢,就是获取一个系统的时间戳。好在接下来下一个步骤。这块呢,就是构造签名串的过程啊,我们来具体的看一下这个Bill的message方法。
03:05
好,那么大家看这块儿是不是最终啊,经过一系列的组装之后,构建出来一个什么呀,是不是method,诶就是它吧。请求方法,然后是什么?URL对吧,然后是什么时间戳啊,然后是随机串,然后是报文主体,并且后面都加了杠N对不对?好,那这正是我们的约定,那构造签名串构造完成之后。我们再往下看啊。好构造这个签名串,构造完成之后呢,我们呢,就在控制台上输出了这个签名串,然后接下来呢,去构建什么呀,去构建签名,好,那我们进入到这个方法当中。进里进好进来之后你会发现他是不是按照约定使用了什么呀,使了这个56RA这个算法呀,对签名串进行什么呀,摘要计算和加密运算。
04:16
那么这个过程完成之后呢,他又进行了。然后啊,继续。好,这个过程完成之后呢,再往下。他又进行了叫做。签名信息的生成对不对?好,那这个位置呢,就是我们的签名信息部分。签名信息部分啊,那你会发现这个地方组装的字符串正和这面一一对应。所以呢,他在这个过程当中,组装完签名信息之后,那再往下。那就把最终的这个签名信息做了一个返回。
05:03
好,返回之后,这个token返回之后,实际上它会返回到调用get token的这个方法当中来,那么是谁调用了get token呢?我们在我们的方法对战当中啊,去找一下执行get token方法之前执行的上一个方法是什么?就是这个signature ex,我们点一下。那点进来之后呢,你会发现在这个类当中呢,它是通过with signat执行,然后干嘛签名对吧,这个相当于是执行远程请求的发送,并且携带签名,然后得到一个响应结果,那么在这个过程当中呢,他在添加认证信息的时候,是不是有一个叫什么呀,叫做authorization这样的一个常量值,那么我们看一下这个常量值是不是正是我们刚才。在组装HTP的过程当中需要的这个authorization字符串,那么这个authorization字符串呢?
06:07
通过刚才我们的request I的header的形式,是不是就把整个的这个HTP头按照我们约定的格式就组装起来了,好,我们再来详细的看一下啊,那么它组装的这个具体的过程呢,就是。后呢,Cred实容。啊,他们两个是对应的,就是组装这,然后这呢是组装这啊,然后再来这个地方getke,就是组装我们的签名信息这个部分,所以这样的话呢,整个这个HTP头在发之前所有的信息那就都被好了。
07:01
接下来呢,我们来看啊,根据这个方法调用站。实际上最终这个方法是由谁来调用的,就是由我们前面所说的这个非常重要的方法XQ的方法来调用的,那这样的话呢,整个方法的调用的流程我们就清晰了,在调用的过程当中啊,从这开始调用它一步一步,一步一步,那么到这为止,它开始组装我们的什么呀,组装我们的签名,好,那这块呢,就是完整的签名的底层的生成的流程,以及签名生成的细节。
我来说两句