00:01
好,接下来呢,我们来熟悉一下整个基础支付APIV3里面的API字典,那么我们打开API字典,选择基础支付,选择我们的native支付啊,我们可以在这个地方呢,看到有native下单,查询订单,关闭订单。啊,Native支付。支付通知,申请退款,查询退款,退款结果通知,申请交易账单,申请资金账单,下载账单,所有的这些接口,那么所有的这些接口呢,我们都要进行一一的实现,而且呢,在实现接口的过程当中呢,我们要遵循一系列的接口规则,所以呢,我们再来看一下这面的接口规则,那么接口规则这一面呢,首先我们要遵循统一的rest这样的一个设计风格。其次使用作为数据交换的不再使用X,那么不用呢,因为我们现在A,那之前的A版本呢,它一直使用的呢,就是XL这种数据交换格式,那么在数据加密的过程中呢,它使用的是基于非对称密钥的SHA256R sa的数字签名算法,也就是说生成数字签名的时候呢,它使用的是这种算法,当然了。
01:26
在这个位置呢,它有具体的签名生成的一个介绍,但是呢啊,就像上节课我们讲的一样,我们用到了微信给我们提供的SDK之后呢,像这个签名的生成过程呢,对于我们来说就不需要再关注了啊,因为他已经把这个过程呢,我们封装好了啊好,所以我们就了解一下它内部使用了什么算法就可以了。接下来呢,这个其实也是相对APIV来说的啊,就是HTPS的客户端证书,那这个跟我们没有什么具体的关系了。那么使用AES256G CM对回调中的关键信息进行加密堡,那么这个呢,也是啊,我们前面讲过的一个对称加密算法当中的一个分组对称加密,那么我们在数据传输的过程当中呢,有一些关键的信息,那么除了我们用非对称加密进行签名和验签之外呢,这些关键的信息呢,我们也是需要加密的,那在这个过程当中呢,当我们确认了身份啊,没有问题之后呢,那么数据内容呢,我们完全可以用对称加密来做,所以这个里面它对称加密使用的是这个算法,当然了,整个的一个对称加密和非对称加密的过程,以及解密的过程呢,呃,实际上在这个SDK当中都给我们提供了相应的方法,我们到时候呢,无论是做加密也好,还是做解密也好,就像上堂课一样,我们无论是做签名也好,还是做验签也好,那使用这个里面给我们提供的默认的方法就好了。那么一旦这个复杂。
02:58
的功能被SDK封装了,那么就会极大的简化我们应用程序的开发。
03:05
好,那么了解到这个里面其实有一个关键的信息,就是使用Jason作为数据交换的格式,所以我们的应用程序当中呢,它会有这个Jason数据的转换啊的这样的一个过程,那么呢,我们就需要在我们的程序当中呢,添加一下Jason处理的工具。我们添加这个谷歌的这。因为这这个工具呢,已经被spring管理了,所以呢,我们这个地方不用写版本号,就默认继承负项目的版本号就可以了。我把这面给它刷新一下啊,保证这个Jason可以加载进来。
04:00
好,那么现在呢,我们已经引入了这个Jason,接下来呢,我们在做一些辅助后期咱们项目开发的一些其他的一些事情啊,就是刚才我们在看我们的API接口的时候。会发现这个里面呢,对订单会有一系列的操作,比如说刚才我们看到的有稍等啊,它有点慢,好比说刚才我们看到的有下单查单关单对不对,还有退款,那也就意味着呢,这些订单呢,他们是有状态的啊,然后另外呢,我们这面的每一个接口。它都是有接口地址的啊,这个是下单的接口地址。那这面呢,是查单的接口地址都各不一样,所以呢,无论是针对于我们的支付状态来说,还是针对于我们的接口地址来说,那这些内容呢,我们都希望呢,在应用程序当中啊,把它写成常量的形式啊,那或者是枚举的形式,那么在这里呢,我已经提前把它们都定义好枚举了,所以呢,我们把这个枚举啊,这个包复制一下。
05:11
知道我们应用程序的这个ment DEMO这个下面好,我们先看一下这个,这个里面都有什么,首先呢,这里面有一个。那么假设我们未来还要整合这个支付宝的话,那么所以这面的支付类型呢,我们就有微信和支付宝,那为了未来我们扩展方便,所以这面呢,就把这两种支付类型呢,定义成了枚举,那么这面呢,是有一个成员变量的,它是私有的啊,然后呢,嗯,是一个final类型的啊,然后接下来呢。我们给它啊定义了get和set方法,那因为它是final的,所以呢我们就只定义了get,好然后接下来呢,又定义了一个全参构造函数,定义全参的目的呢,是为了让这个枚举呢啊进行初始化,那所以呢,这个其实就是调用了全参构造函数初始化了两个枚举值,一个呢是微信,一个呢是支付宝啊所以这是这样的一个美剧,然后接下来呢,就是order status,这是我们说的订单状态,我们的订单呢,有未支付,有支付成功,有超时,已关闭,用户已取消,退款中等等,已退款,退款异常啊那这些呢,是针对我们的应用程序当中的订单。
06:23
然后来描述的一个状态,同样这里面呢,也有一个private final类型的一个订单类型的这样的一个属性。然后上面也是一样的,通过get呢,来自动生成一个get方法啊,我们可以这个地方呢去获取枚举的一个值,那这面呢,也有一个全参构造函数。他的目的呢,是写这样的一些构造函数的一个代码,然后生成我们的不同的枚举值,那接下来呢,是微信配啊这个里面呢,还有一系列的枚举,那么首先我们来看一下API。那么这个API呢,就是我们刚才看到的这些不同类型的A的具体的A的地址啊,比如说呢,这个是查询订单,那我们来看一下啊,根据我们的商户订单号查询这块的地址呢,就是V3,然后那你会发现呢,在我们这这个枚举当中呢,就有相对应刚才的这个地址。
07:24
所以这个枚举呢,实际上就是把所有的这个里面出现的API接口啊,都定义在了这个里面,然后方便我们到时候直接对这个接口的地址呢进行调用好,然后呢是notify notify呢就是除了我们这边有接口之外。这边很多都是接口,那么还有几个通知,比如说支付通知,比如说退款结果通知,我们会把这些通知呢单独的定义出来,那么这个就是支付通知,这个就是退款结果通知,这些通知的地址呢,实际上是需要我们商户平台开发的,也就是说我们要在我们的商户平台当中开发这些API接口,而上面的这些是什么?上面这些是微信支付平台的一些API的接口地址,那么微信支付平台前面不是有一个主机地址吗?那这个主机地址呢,就是之前我们在这个地方配置的。
08:23
就是这个主机地址了。到时候我们去远程调用的时候呢,我们会把这个地址。和这个地址啊进行组装,就组装成了一个完整的远程调用的API地址。好,然后接下来后面这个就是。退款状态啊,那退款有几种状态,一个是退款成功,退款关闭,退款处理中,退款异常等等,那么它整个枚举的定义的过程呢,和前面都是一样的啊,也是这样的几个注解,好,然后呢,这个呢是我们的支付订单状态啊,支付订单状态有支付成功,未支付已关闭,转入退款。
09:08
那这个支付订单呢,是我们的商户平台和微信之间会产生一笔要发起支付的支付交易,那么这是这个订单状态,而刚才我们看到这个status呢,是用户和我们的商户平台之间有一个课程订单,那这个呢,是具体的课程订单啊,所以这个是发生在用户和商户平台之间的一个订单状态,而这个呢,是发生在商户平台和微信支付平台之间的一个支付交易的一个状态啊,这两个状态呢,是有不同的,有区别的,好,那这是我们看到的这个枚举啊。接下来呢,引入枚举之后呢,我们再引入最后的工具类。
10:01
好,我们先把它复制进来。好,那这个工具类里面呢,有两个工具,一个呢是这个呢是订单号工具类,那帮助我们去生成订单编号,退款单编号啊这样的一个工具,然后接下来呢,这个是HTTP,那这个呢是HTP请求的一个处理工具,那么未来呢,我们会接收微信给我们发送的一个HTP请求,那比如说这面是微信的服务器,这面是我们的业务服务器,那传统的情况的远程接口调用呢,是我们的服务器呢,会向微信发送请求,然后微信呢给我们一个响应,但是在我们的开发的过程当中呢,我们会有一个叫。回调通知的这么一个概念。那么回调通知呢,就是微信会给我们发请求,注意和上面的流程正好是相反的,然后我们呢,会给微信发响应,那么微信给我们发过来的请求呢,的这个请求信息呢,就是到了http request里面,我们接收到这个http request之后呢,我们需要把这里面的信息呢都解析出来,那么这个方法啊,或者是说这个工具就是帮助我们解析微信给我们发送的请求的这样的一个请求解析工具啊好,这个后面呢,我们会用到它。
11:29
那到这为止呢,所有的基于接口开发的准备工作呢,我们就做完了。
我来说两句