00:00
接下来继续完成物流查询的功能,也就是说当我们付完款,而且啊商家发完货之后,我们是可以去查询物流的一个状态。啊,各个物流公司呢,他们都提供了物流查询的API,也是我们可以使用各个公司的这个API去查询相应的一个物流情况啊,但是每个物流公司你都要去查的话啊。那就太费事了,所以我们使用一些第三方别人写好的啊,一些API啊,当然有的是付费的,有的是免费的啊,这里我们使用啊这个快递鸟。啊。呃,它呢,可以为我们提供啊,常见的这个所有的这个快递公司的一些物流的一个查询啊,并且包括这个一个及时的查询,一个物流的一个追踪啊,功能还是比较多的。啊,我们就使用这个,首先你注册账号啊,注册账号之后,登录之后你就会进入到。啊,这个你的这个个人中心。个人中心呢,它大概有有这么一些产品服务啊,当然我们嗯,常用的可能就是一个这个快递这个查询啊,我们就。
01:06
用这个快递的一个查询啊。然后啊,这个它是收费的啊,啊大概需要2000多去买,但是他为我们提供了沙箱调试模式,可以让我们去啊进行测试,就当我们测试没问题的时候,再把这个。啊,这个临时的这个商户ID和这个K换成,哎,我们购买的时候就是说开通这个服务的时候给我们的啊这个。这个ID和这个K就可以啊。也就是说,哎,我们先用测试的沙箱的去调试这个,调试通之后再去换成我们这个啊商户的这个ID和。啊,API的这个K,当然我如果直接使用正式的,因为我是没有去买它这个资源包的,所以我是用不了的啊,我们测试就使用它的这个沙箱测试好吧啊。然后这是我们这个沙箱测试的一个个人信息,主要是这个商户ID和这个啊apik听什么,那这有调试的这个示例,嗯,调试的事例呢,可以让我们去调试啊,这些他提供的一些API啊,我们主要用的是及时查询,所以我们在这里去调试就可以了啊这些呢是我们要提交给他的一个参数,也就是我们在请求他这个API要提交的一些参数。
02:15
啊。啊,这个是提交的一些应用参数,这是系统的一些参数。好。那一个是快递的一个编号,就是快递公司的编号,一个是单号啊,当然因为是这个。啊。因为是这个什么呢?是沙箱环境,所以它会啊,给我们随机生成一些这个物流信息,所以这个你随便填就可以了啊,它分两步啊,一步是先基于我们应用的参数。然后和。我们这个API的这个K。进行一个加密,去生成一个呃,Request的一个date啊,就生成它就是呃加密它和它就是用这个K啊去加密。这个物流公司的编号和物流的单号,然后去生成这个request date啊,当然这个都是固定的啊,啊这个ID。
03:08
哎,就是。我们的这个ID看到了吗?这个商户的ID好,这个是签名之后的数据,就是说他会把这些数据之后签名之后放到这里。我们来看一下生成一下啊,可以看一下它生成的这个豹纹。啊,这个是签名后的一个date,也就是说啊。呃,刚才说的是哪里,我看啊。这个是加密后的一个数据啊,这个也是加密,就是用这个K。啊,然后用一个算法,然后去加密这个啊,生成了一个,它最后再用MD5去算的吗。这个是我们请求的一些参数。啊,这是我们应用的一些参数,也就是我们啊应用的这两个参数,它会根据这个密钥去进行加密去生成啊,最终的这个是最终请求的一个参数啊好,那也就是说我们请求它的这个API。
04:00
啊,干什么呢,请他的API给他传上这些参数,他就给给能给我们什么信息呢?来我们调用一下就能给我们这些信息。看到了吧,啊。但这里我们可以选择一下。啊,相应的一个,相应的一个。呃,状态啊,我们让它响应这个四啊。四的话,它的轨迹就会多一些看看啊,这是物流的一个信息,好吧。啊,这个是简单的沙箱的一个使用。啊,也就是说我们只要去请求他的这个API就可以啊,请求他沙箱的这个API就可以,然后传给他这些参数,我们也能拿到这些数据。知道吧,啊,那至于他这个加密算法怎么加密的呢?啊,我也不太清楚,但是我们可以怎么办呢?去这里首先啊,去找到它这个帮助文档,帮助文档呢,你找到这个产品文档,产品文档点进来之后。哎,这里有一些这个文档的一些说明,以及使用的一些方案啊,包括你在这里。呃,接口文档,你还可以看到一个详细的一个各个文档的一个使用情况啊。
05:00
当然你如果不太清楚的话,可以去看一看啊,啊,我这里就不看了,我们最快捷的方式是什么?直接去下载对应语言的DEMO对吧,把它的DEMO改一改。哎,就可以去,哎完成我们的功能了,那我们下载这个P的这个DEMO啊。下载完成了。在文件夹中显示。等会把它截啊。这个是我们使用一个第三方API最快的一个方式啊,就是先下载的DEMO,我们把它DEMO跑动之后再去啊。看他的这个API文档要怎么去使用,要配置什么清楚吧,啊这个已经下载完了。解压到当前目录。来看一下它的这个代码啊,就一个PB文件,我们来分析一下它的DEMO怎么写的。啊,首先是我们啊配置的一些这个商户的一个ID啊,以这个K这个在我们沙箱的这里面都可以看到啊,咱们沙箱行李这这都可以看到啊接着是什么。来接着看啊,接着是请求的这个地址啊,也就是我们向哪个地址去发起这个请求啊,这个地址我们肯定要换的这个它正式API的地址,我们沙箱的地址不是这个啊。
06:09
沙箱的地址不是这个,等会再说啊。接着看下面呢,就是呃,调用这个函数这个这两个调用我不用看啊,这个是调用函数这个输出结果,这个我们也不看,那接着看什么呢。就是这个函数,这个函数做了一个什么,因为在这里调用这个函数么,这个函数做了什么,是不是啊,这个是我们请求的一个参数,你看比如我们的物流公司对吧,圆通,然后单号12345678,好接着他把这个我们请求的这个数据用这个啊URL啊,这个转码之后啊,转码之后给放到了request data里面,是不是,然后。还干什么呢?还在这个date数组里面去封装了一个签名的一个字段,Date啊,签名的一个字段,签名是谁用这个函数啊,这个函数进行签名,这个函数接受两个参数,一个是哎,我们的这个date,哎就是我们请求的原始的一个数据,然后和一个APP的一个K,也就是。
07:06
我们这个API的一个K。然后接触这两个参数,然后我们看到这个函数,它干了什么,其实这个函数比较简单呀。就是用这个啊,贝斯六四先转码,然后就是先用MD5加密,然后是date连上这个BPK,接着用贝斯六四转码,接着再用这个UR转码。哎,最终就得到了一个这个签名嘛,我们签名的这个字段好,最后一步他调用了一个方法啊,这个方法我们都不用看他是干什么,他就是发送一个请求的。清楚吧,我们如果用love,我们根本不会用到它,我们love有自己的这个请求的一个工具,我们为什么要用它,是不是?所以把这个它的DEMO捋清楚之后,我们就发现特别简单,其实我们只需要去准备好这个请求参数,然后去请求这个地址就完事了。就什么啊,就是这么简单。好。来,接着我们来,呃,写一个路由啊,开始去。测试一下。
08:05
API。哎,在这里面我们写一个,呃,物流查询的一个路由啊。那订还放到订单里面吧,放到这里面吧。Get方式就可以啊,物流查询呃,使用get方式啊就可以了。我们要传一个订单过来,就是说你要查哪个订单的一个物流。物流我们用express吧。好。Order controller里面的方法。啊,你在这写吧,这个控制器写的方法已经有点多了,其实我们应该再去拆分一些方法来写。一个烦。
09:06
来。啊,这里接收一个订单啊。好,按照我们刚才的这个分析。啊,无非我们就两步,一个是准备请求参数对不对,准备请求参数,第二个是干什么。发送请求是不是啊,就这两个啊,来准备请求参数。他请求无非是要什么参数,就要要这些参数呗。按照这些参数呗。对不对,好,先放这儿不用管。接着主要是这个,他需要用这个方法去加密。来需要用的方法转码,我们把这个方法也给复制一下。这个不用看。好,注释也给他写一下啊。好签名的一个生成。
10:01
那这个就因为我们是在这个类里面嘛,所以用this去调用这个方法。啊。嗯,接着就需要处理我们这些了啊,这些它都用的常量,是不是我们可以都给成变量网线,比如说dota。好,它等于什么,先不用讲这个格,这个变量的这个这个这个格式啊,我们先把这些数据先准备出来,看看能不能测试通,好吧,那这里就用这个变量吧,那接着还有一个APP的一个K,是不是APP的一个K等于。等于那个等会我们去网站去看啊,还需要一个什么请求的一个地址是不是。对吧,我们要向哪个地址发起请求。是不是require?URL啊,这个地址你如果去写这个就完了,你如果写这个你测试不通的,这个是正式的一个地址好吧。
11:00
清楚吗?来给你们注释一下啊。啊,小数单引号啊,这个是正式地址,好,那我们既然要用沙箱测试沙箱的,它的地址什么呢?我也没在他手上上找到啊。但是我是怎么怎么看的呢。我是打开了这个调试模式啊。然后打开这个网络请求,我先把所有的都清空,然后我这里去调用,我调用的时候,我肯定要发送一个请求,对不对,它因为这是个沙箱环境,它请求的地址肯定是沙箱的一个地址,所以我在这里面去找到的啊,我们去手册里面我没看到,可能我看的不太仔细啊,好,这个其实就是我们沙箱的一个地址,你看没有他带的这个沙箱的这个一些参数。那我们沙先用这个地址啊。因为他手册我也没仔细看,我就大概过了一眼,没有看到说沙箱地址的这个地方。Re EQ l等于这个啊,用我们沙箱的这个地址,沙箱地址。
12:02
好吧。啊,那这个我们就注射啊,这个正式的地址我们先先不用啊。好,接下来请求的参数我们准备好了啊,类型什么都有了。哎,把这个ID,这两个ID给配一配吧,好吧。那这个APP的K,我们给他传过来。把这个变量给用上,接着去。这个里面。把商户的啊,这个测试的这个ID给上。然后商户测试的这个apik给上。好,这样应该我们的请求参数就准备完全了啊,接着去发送请求,发送请求啊,我们前端可以使用,比如翻一下2.3d之类的,但我们这个PB后端我们可以使用什么。跟省市L是不是,但是也不用我们去。在写C。拉,已经给我们封装了一个请求的一个工具啊。你直接去看手册,找到中文话题atv这一块啊。直接可以使用AP的门面去发起请求。
13:03
清楚吧。最简单的方式,比如说get,然后post。是不是?好post,当然你如果这么直接post的话,你请求请求不到的啊,因为什么呢?它这个沙箱调试啊,它是这个数据要放到哪里呢?放到那个请求的就是这个form date里面。所以我们来看看手册能支持这个form date的。你看这个啊,发送UR编码的请求。啊,因为我们这个它的这个参数都是用的这种啊,所以我们要用这种才行啊。来直接复制一下这个请求。啊,一开始我写的时候,我也是用的直接就是POS,发现他请求不通,最后换了啊这个UR这个。才请求通啊,所以大家也用这个as,就是以表单的形式这种去请求啊,Attp来引入一下它的这个门面。
14:03
门面好,那这个地址就不是他这里是我们的这个require URL对不对,而且提交的数据就是我们这里准备的这个data斯嘛,对吧,这样我们请求之后就会得到一个结果。Without哎,我们来定一个结果啊,接下来干什么呢?嗯。我们来直接return这个结果啊,这个结果先看一看这个结果是什么。Re UT,那看一下我们API的这个地址,是要给一个订单,然后加上一个plus找一个订单啊,必须订单得存在才能请求过来。啊,有四和五是不是,那我们用四吧。打开这里。来登录一下talking。
15:00
好,这里动一下Tony啊,那接着。把talking给加上。使用get的方式我请求。然后查询订单这个物流状态的一个地址,加上我们订单四加上。Express物流的一个信息,快递的一个信息来发送。好,这是给我们返回的一个结果,你会发现啊,它返回的。是一个字符串是不是。对不对,也就是我们这个请求的结果是一个字符串。对吧,所以你要你要给它转成数组字符串转数组是不是杰森de的。然后把我们的字符数放那,然后加上出是不是转数组了。来看一看啊好。哎,这是我们请求的结果。知道吧,但是我们请求的结果呢,我们这个不需要,我们只需要他这个数据是不是这样的。
16:00
哎,是不是可以再取一层它。我们先把这个数据结构给处理好,但是它呢,你取出来之后,它又是一个字符串。看到了吧,所以你这里。怎么办?是不是还得再转一次?哎。那这个结果就是我们可以最终去返回的一个结果了,是不是?可以了吧,啊,然后我们最终去返回这个。我们再处理一下dota res吧,Ret返回的一个数据等于它。那我们返回的时候就可以re return。Response。瑞啊,使用顶格API的这个返回,返回这么一个数组。看一看。这样我们快递就是说物流的一个轨迹,是不是就。写好了,你看已揽件,然后已到达哪个地方,已离开,已到达目的地签收啊,这个是因为我们请求的这个沙箱的环境,因为沙箱环境不要钱,你要请求正式的。
17:09
还得收费,你还得去买。就是吧,嗯,只要你沙箱你测试通了,你你买了这个资源包以后,换成正式的K啊,一测试就应该应该是没什么问题啊。啊,那我们这个就完成了物流的一个查询。好,但是呃,我们把代码都写到这里呢,是。比较乱的啊。万一我们其他地方也用到这个物流的一个查询呢,你还要再复制一遍代码。改改。对不对,那多麻烦呀。啊,所以我们想办法要把它给封装起来,既然我们没有用第三方的一些组件,是我们自己写的一些东西,我们是不是也可以去创建啊,一个类去把它给封装起来。是这样的吧啊。
我来说两句