00:01
接下来我们就来说一下要使用支付宝的时候,它里边要用到的一些核心概念,首先我们来看第一个叫应用的ID,应用的ID呢,他说这是您的PIID这appd,我们来看一下我们想要使用支付宝呢,其实我们要在支付宝里边创建一个应用,咱们这个管理中心里边,那么之前创建的这个应用呢,支付宝还要审核,那每一个应用,只要我们创建完了以后来点进来,然后呢,它下边呢,这一块就有一个APPID,相当于我们要上传的就是这个代表的是我们当前是哪个应用,那有了APPID以后呢,支付宝还要让我们来传递这些内容,有一个什么商户私钥,支付宝公钥,那接下来这个钥呢,就牵扯到我们这个加密的流程,因为我们现在呢,我们这个商户跟支付宝他们之间呢,要传输一些数据,特别要一些付款这些金融数据,它呢非常重要,要求的加密程度比较高,所以呢,我们必须在网。
01:01
网络间传输使用加密传输,否则呢,网络中间如果被某些人拦截来做一些恶意修改,这就很危险,那这个加密呢,我们就牵扯到一些要使用的加密算法,这个加密算法呢,比如我们先来说一第一种我们叫对称加密,所谓的对称加密,我们现在呢想要在网络传输一段铭文,但不能传,我们现在呢要加密,对称加密呢,指的就是我们加密和解密用的是同一把密钥,假设呢,我们就要发送方准备了一串铭文,123456,我们想要传出去,他们呢,先用我们这个密钥A把123456加密成一串我们不认识的东西,变成一个密文,然后呢,把这个密文通过网络间进行传输,即别人即使截取到这个密文,由于呢,他不知道我们加密用的是什么算法,什么密钥,他呢没办法解密得到铭文,那怎么办呢?我们这个接收方收到这个密文以后,我们知道发送方跟接收方用的都是哪个钥匙,所以接收方。
02:01
跟发送方用同一把密钥就行了,然后接收方拿之前的这个密钥呢,再把这个密文解出一个铭文,他去来进行使用,这是我们说的对称加密,但对称加密呢,它有点不安全,我们只要有一方它的这个密钥泄露,比如发送方这个密钥泄露,或者接收方密钥这个泄露都会影响完整的通信流程,我们发送方呢,因为从头到尾只有一个密钥,我们只要这个被截取了,就像我们这个谍战片里边的密码本,一旦呢被截了,我就可以自由的跟你通信,包括呢,你发过来的这个数据,我也能自由的进行解码,所以呢,这个是不安全的,在金融领域我们不能用,那接下来呢,我们就来说安全的一种叫非对称加密,那非对称加密呢,翻译过来就是我们加密跟解密使用的密钥不一样,它不对称,那就叫非对称加密,那非对称加密呢,整个流程应该是这样子的,比如们这个发送方想要发。
03:01
发送一一个秘文数据,想发送一个铭文数据,他把这个铭文数据呢,先用密钥A加密成一段秘文,不认识的秘文,然后呢,这个密文经过网络传输到达接收方,到达接收方以后呢,接收方拿这个另外一把钥匙进行解密,得到铭文,那这样的话,我们这个发送方呢,即使这个密文它呢被网络截取,我们现在呢,网络截取到发送的这个密文数据,而且呢,那个人也知道了发送方的这个密钥,但是呢,他拿这个密钥却解不出这个密文,所以呢,这个相对比较安全,但如果说我们这个网络上的一个黑客,如果知道了这个接收方的密钥,那呢,它就可以进行自由的解密,现在看啊,不是自由的通信过程,只要是发送方发来的数据,他截取到,他呢,都可以拿这一把密钥来进行解密,但是呢,他却不能完模拟。
04:01
给完整的通信,完整的通信呢,那就是接收方又要给我们这个发送方发数据,所以为了安全起见,看我们单项的第一项流程,我们使用两把钥匙,两把钥匙那就是发送方,我们要发送数据的时候,用一把钥匙加密过来,接收方拿另外一把来解密,然后呢,我们接下来接收方再给发送方要传数据的时候,我们再来造上两把钥匙,然后呢,接收方拿一把钥匙来进行加密,然后呢,发送方拿这把钥匙呢来进行解密,这样呢,相当于另外一项的这个流程,那又又是一个安全的,你除非完全知道我们这四把钥匙,否则呢,你就不能模拟完整的整个通信过程,你如果不知道B,就解密不了数据,你如果不知道A,就模拟不了发送方发数据,你如果不知道C,你就不能伪造它是一个接收方给发送方发数据,如果你不知道D,你就不能把人家发过来的数据你再来解密。
05:01
嗯。所以呢,我们就使用非对称加密来做整个金融级别的数据加密,非对称加密的代表算法呢,R sa等等,我们这个r sa呢,是现在非常常用的金融领域的非对称加密算法,所以接下来支付宝这一块呢,要配置的各种钥匙,其实呢,就是我们接下来说的这个流程,那么来理解一下支付宝里边各种几把钥匙的这个使用方法,当在这个使用之前呢,我们来再来了解一些概念,那因为我们使用非对称加密一个传送过程呢,就得有两把钥匙,接下来在支付宝里边呢,又有一些关键的名词,公钥和私钥,什么叫公钥和私钥,看我们现在呢,不看下边这一个整个传送流程,我们就以单上边为例,那发送方呢,要给接收方发送一个数据,他呢,先拿这个钥匙A进行加密,但这个A呢,他不能被别人知道,他得自己藏起来,他呢,加密完了。
06:02
了以后,让接收方拿钥匙B来进行解密,所以他就必须告诉接收方钥匙B是什么,所以这个钥匙B呢,就应该暴露出来,那这个钥是B,我们就称为这叫公钥,那暴露出给别人用的那就叫公钥,我们自己藏起来的就叫私钥,这个公钥和私钥是一个相对概念,你也可以把这个钥匙币藏起来,那这个就是私钥。所以说呢,对于第一个单项流程,我们这个钥匙B呢,就是我们的公钥,他要暴露给接收方使用的,那对于第二个单项流程,第二个流程呢,我们这个接收方又要发数据往出发,所以接收方呢,藏一把钥匙叫钥匙C,它藏起来主要来用来加密数据,加密过来的密文呢,传到网络之间,它呢,发送方又想要接收到这个密文来进行解密,他就得用另外一把钥匙叫钥匙D,此时呢,接收方就得告诉发送方,你要用哪把钥匙才能解密我的这个。
07:02
定文数据,那这样的话呢,我们接收方暴露的这把钥匙,钥匙地又称为公钥,所以呢,我们说的这个公钥私钥就是相对于我们这个藏起来的这个相对性概念,然后呢,接下来加密,那就是把一个铭文啊加密成一个密文数据,接下来还就是我们说的签名以及验签,那这个流程呢,我们可以来参照我们的这个流程来看支付宝里边是如何来使用的,支付宝呢,现在在我们整个要使用支付宝期间,也同样有四把钥匙,这四把钥匙呢,分别商户自己藏一把,这个叫商户私钥,那商户的私钥拿来以后,商户利用私钥加密数据,要给支付宝来传过来,支付宝要解密数据,说商户必须把这个私钥对应的这一把公钥告诉我们这个支付宝,因为rsa算法呢,它其实生成钥匙就是一对一个。
08:02
A一个B这个AB呢,你随便藏一个,另外暴露给别人,别人呢就可以用来进行解密,所以呢,我们现在商户现在呢,自己藏一把给支付宝公公钥交上一把,支付宝呢也一样自己藏一把钥匙。支付宝还要给商户发数据,所以支付宝里边呢,自己藏一把钥匙,在告诉商户一个钥匙,这个呢叫支付宝的公钥,那整个流程呢,就是这样子的,首先我们这个商户呢,生成了一个私钥和公钥,他留一份,支付宝留一份,接下来呢,商户比如想要支付一个订单,比如我们这个数据呢,叫ORDER1234,然后呢,And money等于100,本来呢,我们可以把这个订单进行一个加密,加密成一串不认识的字符,直接传过去,支付宝来进行解密,但我们觉得呢,这样太麻烦了,支付宝还要解密,包括呢,我们加密的这串密文,如果别人一直拿这串密文,把这串密文截取来了,别人呢,直接把这个密文发出去,相当于来伪造这个数据,那这个呢,可能稍微也有点不安全,所以我们现在做了一个事情,就是呢叫签名,这就类似于我们签了一个协议,每个人都要按上他的指纹,那协议里边的数据只要改一下,我们现在这个指纹呢。
09:19
都是必须发生变化,就类似于大家认为这个指纹是一个MD5,只要协议内容有变化,这个指纹就必须变,但现实生活中虽然不是这样,所以呢,我们相当于这个协议的铭文跟这个指纹呢,这个签名,它其实是一个成套的,你任何一个病了都不行,所以呢,我们这个商户在传的时候,那为了支付宝使用方便,把铭文也传给你,但是在铭文后边,他先用这个私钥给你加一个密,相当于我们称为加一个签,然后加一个签名,比如这个签名呢,就是这个,他呢将这个铭文和这个签名全部传去出去,所以呢,他把这个作为一个整体数据在网络间传输,别人即使拦截到这个数据,比如呢,你想支付100。
10:04
黑客恶意破坏,想要呢,让你支付上1万,那他给铭文后边加了四个零,他一看,诶这个字段看得懂,给后边加四个零,让你想让你多支付数据,但是呢,如果他改了,那传给支付宝,传给支付宝以后呢,支付宝收到这一串数据,有一个签名,有一个这个数据铭文数据呢,他直接拿来用,相当于他要支付多少钱,然后呢,这个签名他呢,就要用这个公钥验证一下,这个铭文跟这个签名是不是同一个东西,所以呢,它一验证,只要这个铭文稍微一个字节发生变化,签名就不一样,所以呢,我们网络之间,现在这个数据呢,没法篡改,所以我们现在呢,这个验签过程,就是我们用我们这个公钥呢,把你传来的数据,我来验证一下,你说的这一串数据,对不对?好,我们相当于使用公钥来做一个验证签名,那验证完了以后,支付宝觉得这是对的,然后呢进行支付,支付完了以后呢,假设支付成功了,支付宝接下来就得告诉我们这。
11:04
当户成不成功,比如支付宝有一个信息叫success处告诉你此次的交易流水是一号,你的这个订单支付成功了,那接下来呢,支付宝就得把支付成功的这个消息或者各种消息,然后呢发送出去,那发送出去呢,同样支付宝先用他自己的私钥,拿这个私钥呢,生成这条明文数据的一个签名,这个签名呢,我们生成签名的过程,我们称为加签,就相当于我们按指纹的过程,然后呢,接下来把整个数据再来传输给我们商户,商户呢收到完整的数据,前面的数据商户知道成了还是败了,但商户为了验证这条数据是支付宝发过来的,所以呢,他就应该用支付宝给他的公钥再来验证此条数据,他呢,这个验证过程就叫验签,如果验证正确了,那商户就认为这条发回来的数据是可信的,那为什么要有这个验证的过程。假设我们这。
12:04
的模拟这个黑客的流程,那现在呢,这个明明这个支付成功了,然后呢,我们这个支付宝给我们传递的是成功数据,但是呢,中间有一个人拦截到了我们这个网络间有一个节点拦截到了我们这个支付宝数据,他把这一块呢,铭文success呢,他改成force,相当于告诉你失败了,你再给我支付,告诉失败了你再给我支付,所以呢,我们就会出现我们商户呢,收到一看,诶支付失败了,那我再支付吗?但实际上是支付成功了,如果不验签,你光看这个,你说结了支付失败了,但是呢,你为了验证我就不信这个支付失败了,我们给你验证一下签名一验证呢,支付宝原来是未触来做的,这个签名是这样,如果你改成false,肯定就是另外一段签名,所以我们签名验证不通过,那么就认为这个不是支付宝给我们传回来的数据,可能是网络之间进行了一些篡改的数据,所以呢,我们整个验签过程在任何一方都非常必要。
13:04
那这样只要我们有了四把钥匙,我们整个通信过程呢就是可靠的,因为我们有一把钥匙永远不知道,那就是支付宝的私钥,支付宝这个私钥的管理呢非常严格,当然我们具体也不知道他们怎么管理,但是呢,想要知道支付宝的私钥,比你想要知道核弹的发射密码可能还要难,所以呢,这就是我们整个的在我们支付期间要用的这四把钥匙,所以我们只有把这四把钥匙相当于配置好了以后,那才能呢做一个完整的安全的整个支付流程,那接下来我们要做的事情,那就是来配置这四把钥匙,因为现在能看到,那现在呢,在我们的这个客户端,我们想要支付,我们要配两把,第一把叫商户的私钥。第二把叫支付宝的公钥,现在呢,看来就是这个,我们相当于要配一个商户的私钥和支付宝的公钥,所以这些东西呢从哪来?那么接下来就来参照我们这个支付宝这个流程文档,好,我们现在呢,还是来到我们的这个开放平台,开放平台我们来文档中心,那现在呢,还是来电脑网站支付。
14:15
电脑网站支付呢,我们这个DEMO里边已经有了。我们这块接入呢,不可能接入我们这个线上的应用,线上应用呢,要进行完整的审核,我们等不了这个流程,所以我们应该来到开放平台支付宝,为了让我们测试方便,专门呢有一个这个文档中心里边有一个叫沙箱,我们可以配置一下沙箱的安全测试环境,来到沙箱,我们来点进这个沙箱环境,大家呢,每一个这个账号里边呢,人家都给你配置好了这个沙箱的这些应用环境,所以我们接下来这个APPID,那就是沙箱的这个APPID,我们直接呢给这来一配置就行了,相当于他默认给我们注册了一个沙箱应用,那接下来呢。还有我们这个支付宝网关,相当于我们支付要调用支付宝的哪个域名接口,这是我们支付宝的网关,把这个呢复制过来,还是配置到我们下边,下边呢有一个支付宝网关,那我们就来一配置,我们只要一去线上,我们使用沙箱呢,只要沙箱测试成功,一去线上以后,大家注意一定要把这些杠R-N这些呢给它去掉,一去线上呢,只需要把网关切换为线上网关,那就成功了,我们这个支付的测试网关,沙箱网关它会加一个D,好,然后呢,下边这一块一看呢,这就是日志的,这个也不是啥网关,我们就不用配置好,那这个呢,应用的ID和网关配置好了,接下来就是这些钥匙,这钥匙接下来怎么判,那我们就能看到,在我们这个沙箱里边呢,有一个叫RS sa,我们现在呢,就是使用RS sa2这种钥匙,所以我们接下来要做的呢,就是在这。
15:55
在这个钥匙呢,点一个设置查看,我们现在呢,这有一个应用的公钥,还有一个支付宝的公钥,但是我们要得重新来生成,因们发现呢,我们自己得有一个商户的私钥,公钥和私钥是同一对钥匙,诶这一对的两把钥匙,公钥呢是交给支付宝用的,支付宝为了来验签你的数据,私钥是我们自己来加密的,这一块呢,是我之前配置的东西,但是私钥呢,现在已经丢了,我们现在不知道了,所以我们现在来更换一下,我点一个更换,我们呢暂时不先使用证书,我们就直接使用这个公钥,那要使用公钥呢,我们就得生成咱们这堆钥匙,所以我们这儿专门有一个支付宝密钥生成器来点开把这个密钥生成器呢,我们现在是Windows,我就直接下载下来,而大家注意这呢是一个安装包,它也提示我们Windows版本的这个工具不要安装在含有空格的这个目录路径下,好,我们现在呢,就把这个工具我们现在下载过来,下载过来以后呢,我们来进行安装,安装到一个非中文。
16:56
无空格目录下,好我们来保存,来直接来进行安装,我们来点击安装,好我们来随便选择一下,我们来点下一步我们来进行安装,那那现在就把它安装在F盘。
17:08
比如我们这个磁电脑F盘,我们就放到我们的这个dev tos里边,好H排我们的这个dev toolth,好我们的这个软件开发。这一块呢,就是我们这个阿里pad,我们这个密钥生成工具,它是r sa这个生成工具,好,那现在呢,选中它,我们来点一个确定,我们点一个安装这个密钥生成工具,我们来安装好以后,我们来点击完成,现在呢就来进入到我们这个密钥的生成环节来看这个生成,那们现在呢,就是使用的是r sa,二我们主要来看这儿,这儿呢,我们在这沙箱环境配的这一块呢,们来再点击设置,我们设置的是RS sa,所以我们点设置我改这个钥匙,我们使用这个公钥串,公钥字符串,所以呢我们现在是r sa没问题,然后呢,我们生成r sa,我们现在呢是Java的,所以我们来点一个生成密钥,那一生成密钥以后呢,大家会看到这有一个应用私钥,还有一个应用公钥,私钥呢,就是我们自己要妥善保存的,我们点一个复制,这个私钥呢,我们藏起来,藏起来呢,配置到我们这个应用里边,这是我们商户的私钥,走把这个私钥呢一复制。
18:18
放到这儿,我们以后呢,发送数据会拿这个私钥来进行加密,但是呢,接下来我们来看到我们在生成药的时的时候,都是一对有一个私钥,还有一个公钥,然后呢,我们要把这个公钥我们来复制来,这个公钥呢,我们放到哪要放到我们支付宝这一块,他呢要求我们来上传一个公钥。咱们来选中公钥来CTRLV,我们把这一块呢删掉,这一块的I行删掉,不能选择ctrl a删掉,好每一个呢全部删掉,现在呢,我们相当于自己重新来生成了一段公钥,那这一块删呢,删到头以后呢,它总是这个这个给我就没有了。好,我们现在呢,自己在这写一个杠,我们把这个我们的这个钥匙复制过来,然后把前面的这个杠呢删掉,好这是我们的这个公钥,把我们这个公钥呢复制上来,当然你也可以点击上传公钥,快速的上传过来,来点一个保存设置好,所以应用的公钥呢,就变成了我们自己的,我们呢只要生成一个公钥,然后呢,支付宝下边呢,告诉我们一个公钥,把这个公钥呢再一复制,点一个复制公钥,好,我们把这个公钥呢,只要一复制,我们把我们的这个钥匙一对自己留一个给支付宝上传一个,支付宝呢,接下来就会告诉我们他的这个公钥是什么,因为这个公钥是要告诉别人的,那这个支付宝公钥已复制来,大家注意配置在我们下边这有一个支付宝公钥,这个是支付宝公钥,不是商户的公钥,商户公钥是告诉支付宝的,好把支付宝给我们返回的公钥再给这一配置,那配置完了以后呢,接下来我们这个钥匙就配置完了。
19:58
钥匙配置完了以后呢,接下来还有下边的部分,下边部分呢,这还有一个应用网关,这一块我们可以不用填,下边这块呢,我们可以都不用填,那么这个公钥呢,我们现在就配置好了,配置好了以后呢,我们这四把钥匙都有了。
20:14
如果你哪一天忘了支付宝公钥在在这儿呢,一复制就行了,好,我们这四把钥匙我们自己留了一把,留了一把呢,我们是在这儿配置的,所以这个呢要妥善保存,然后呢,接下来我们支付宝的公钥我们也拿到了,相当于我们的私钥,我们留了我们的公钥给支付宝了,支付宝的公钥我们留了,但我们永远不知道支付宝的私钥,所以只要不知道任何一把钥匙,我们整个完整的通信过程它都是安全的。那这几把钥匙配置完了以后呢,接下来这还有一个服务器异步通知页面,同步通知页面,这个页面是什么,我们现在测试一下就知道了,好,我们来右键,我们直接来运行我们这个Java项,好,我们直接让他在to cat上运行走,把我们这个项目一运行呢,它就有我们支付宝给我们的DEMO里边呢,有完整的整个付款所有的流程,我们在这,诶我们看我想要付款付一块钱,那么来点击付款,我们就可以来进入到我们这个付款页,但这个付款呢,现在。
21:12
我们不不用我们的这个支付宝来付款,因为我们现在呢,整个使用支付宝的沙箱,所以来到我们的这个沙箱环境看,沙箱环境里边呢,有一个沙箱账号,这个账号呢,这是我们商家账号,还有一个买家账号,这个买家账号里边呢,我们还能充值。先我们测试来使用它来进行付款就行了,这有买家的账号,还有我们的这个密码,所以我们可以拿它来进行登录,比如我们在支付的时候。我们在这儿支付宝要支付,我们在这儿直接来登录这个账号呢,就是他给的,然后呢,密码我们在这儿呢,有一个买家的这个登录密码,来点一个支付,诶这是支付密码账号名,那现在呢,要求支付密码是六个一,这六个一好我们来数123456来点一个下一步。
22:01
那这就是我们使用我们的沙箱账号来进行支付,那支付成我们接下来账户余额,我们沙箱里面的余额还挺多的,然后我们接下来再来输一遍支付密码,来点一个确认付款,那么整个流程呢就做完了,那么这个已付款成功完了以后,那一般呢,就会跳回到我们这个商户页面,所以我们看现在呢,这个交易成功跳转到我们这个商户页面,然后接下来看我们这儿有一个工程公网访问地址,什么什么什么,然后接下来大家会看到我们这块呢,就有一个配置叫工程公网访问地址。在这同步通知页面,然后呢叫return URL GSP,我们这就是return UR GSP,所以呢,我们的这一块配置就是支付宝支付成功以后,我们这个支付宝支付成功以后要跳转的页面地址,所以我们这一块呢,想要正确的能跳回来,因为我们的这个网站地址呢在这儿,所以我们应该复制成这个叫这一块走,这是我们把前面的复制栏后边的这一块应用的这个名字,我们只需要留一份,这是我们的这个应用地址,包括呢,还有一个叫支付宝我们的这个服务器异步通知地址,这个同步通知呢,相当于就是我们支付成功以后,给我们跳回一个呃成功展示页,那这块异步通知呢,就是我们说的支付宝,只要你支付通成功了,它呢,会每隔几秒给我们来发送一条消息,告诉你支付成功了,你可以接收到这个消息以后呢。
23:35
后台修改一下订单的这个成功页,所以呢,这是我们这个异步地址,异步地址呢,那就在这儿。我们还是呢,目前复制到我们的这一块走。我们先放到这儿,这就是我们来测试我们支付宝的使用,只要大家的四个密钥都测试成功,然后接下来想要付款呢,就用他的这个沙箱账号,只要我们付过款的,支付宝还会提示我们已经付款成功了,再来重新刷新,每次一刷新呢,都会有一个新订单,不管想要付多少来直接使用他的沙箱来进行付就行了,然后他给我们的这个沙箱账号。
24:11
我们再来复一遍,那就是它和六个一,好,我们把它呢复制过来,来到我们的付款页面,来点一个登录付款,就是它,我们来输入六个一。点一个下一步。好,我们现在来配置我们这个六个一,我们来点一个确认,只要我们这个付款成功,就会跳回我们指定的页面。那么这个页面改了以后呢,我们看服务器它应该有自动启动了。这个restarted我们来看,现在我们这个付款成功,现在就跳回我们这个页面,这个页面呢展示try number是交易号,交易号是支付宝返给我们的,还有auto number什么的订单号,看2020什么1179是我么,当时支付的时候,这个1179我们自己的订单号,然后支付了金额是多少,这一块呢都有。
25:05
包括我们看一下这一块的控制台,我们这个支付成功,他也没有打印什么,没打印什么,就没打印什么,大家呢,先把我们整个这一块的DEMO测试完成。
我来说两句