00:00
好,现在呢,我们要开发我们的微信支付的微信支付下单功能了,那我们在这个页面当中呢,可以看到有四门课程,那我们可以任意选择一门课程,然后选择微信支付,然后在这个地方呢,点击确认支付,那我们希望点击确认支付的一瞬间呢,在我们的浏览器当中会弹出或者是展示一个微信的二维码,那么这个时候呢,用户拿起手机打开微信扫描这个二维码呢,进行支付,那我们再看一下我们的微信。支付平台的一个文档,在我们的API字典native支付下,有一个叫做native支付的这样的一个菜单,我们点击一下啊,这个里面描述的呢,实际上是整个微信支付的一个完整的流程,它并不是某一个API,所以呢,我们先把整个微信支付的完整的流程呢给它穿一下,那我们来看一下。
01:01
这面呢叫做业务流程时序图,为了让这个展示空间大一点,我把它在新标签当中打开。那我们先来看一下,首先呢,这里面有四个角色,第一个角色呢,是微信支付的用户,也就是拿着手机的那个那个人哈,那个用户,然后接下来呢,这个是微信客户端,也就是说手机上的那个微信应用程序啊好,第三个呢,是商户后台系统,那么这个商户后台系统呢,就是现在我们开发的这个鼓励学院的这个前后端的项目了啊,它包括前端,包括后端,我们都管它叫商户后台系统。然后接下来呢,就是微信支付系统,也就是远程的微信支付平台,所以目前为止呢,一共有这样的四个角色,那我们来看一看。这四个角色之间是怎么协同工作的?
02:01
首先呢,用户啊,他在这个位置点击确认支付的时候呢,相当于他主观上想要发起一笔UI课程的订单,对不对,所以呢,在我们的这个过程当中呢,商务后台系统在用户点击了。确认支付的时候。首先第一件事情要生成订单,那么生成的这个订单它会在我们的数据库当中。的中生出一条订单记录,所以呢,首先呢,我们在生成订单的过程中呢,要数的order in表中插入一条记录。那生成完订单之后呢,我们的商户后台系统会调用微信支付的统一下单API,生成一个预支付交易,那么这个统一下单API呢,就是我们在这个地方看到的native下单,所以这个呢,我们要进行远程调用的第一个微信接口。
03:10
那么紧接着呢,微信支付系统收到我们的请求之后,生成了这个预支付交易之后呢,它会返回一个预支付交易链接,那么这个预支付交易链接呢,实际上它就是一个code的URL,那code的URL呢,未来会被我们的二维码生成工具呢,生成一个二维码,所以呢,我们的商务后台。会根据这个链接生成一个二维码图片,那么这个二维码图片呢,用户呢,就可以在商户后台系统当中看到了,那么用户看到这个二维码图片之后呢,此时用户呢,会打开他微信客户端,然后呢,利用微信客户端的扫一扫功能呢,进行扫码操作。
04:01
那么扫码操作的这个过程呢,会直接提交给微信的支付系统。微信支付系统收到用户的扫码请求之后呢,会先验证这个链接的有效性,那么验证了这个链接的有效性之后呢,就会要求用户授权,那么要求用户授权的过程呢,实际上就是让用户输入支付密码的过程,那么接下来呢,用户在微信的客户端输入支付密码,并且确认支付之后呢。那么微信客户端就会把这个授权提交给微信支付系统,也就是说用户在这边同意支付了,那么同意支付的这个请求呢,就会提交给微信支付系统了。微信支付系统呢会验证这个授权,比如说如果这边需要输入密码的话,那么微信支付系统呢,就会校验这个密码啊,如果这边需要按下指纹的话,那么微信支付系统呢,就会校验这个指纹。
05:06
验证授权完成之后呢,微信支付系统这边就完成了这笔支付交易。那么紧接着在下面这部分的内容当中呢,有几个并行的操作啊,第九个步骤呢,就是我们的微信系统完成支付交易之后呢,会将这个结果通过微信或者是同时通过短信的形式呢,提示给用户。微信客户端呢,就会展示一个支付交易结果页面,这是我们的用户的手机上的微信的客户端接收到的通知,那么与此同时呢,我们的鼓励学院的这个系统也会收到一个结果通知。这个结果通知呢,就是微信向我们的鼓励学院的系统发起的,叫做异步通知。因为这个通知呢,并不是像之前一样,这个是请求,这个是响应啊,这个是请求,这个是响应,他不是这样的,他呢是微信主动给我们发起的请求,并不是我们给微信发的某一个请求的响应啊,所以呢这个呢,我们也管它叫回调通知。
06:15
我们的商户系统呢,接收到这个回调通知之后呢,需要对我们系统当中的订单状态做一个修改,修改成功之后呢,我们会告知微信系统,我们的这个回调通知呢,已经成功的接收了。在回调通知发送和响应的过程当中呢,有可能会出现网络异常的这样的一个情况,那么有可能呢,我们这边的回调呢,由于某种原因没有成功的接收到,那么你会发现呢,用户收到了支付成功的通知,但是我们的系统没有收到支付成功的通知,这就会导致呢,用户实际上已经支付成功了,但是我们的系统因为没有收到支付成功的通知,所以就没有办法在这个过程当中去处理我们的订单状态,那我们系统当中很有可能就会有一个什么呀,订单状态未更新的这样的一个情况,那这面呢,已经成功支付了,这面订单呢写尚未支付那。
07:22
这样的话呢,用户体验就不是特别好了,所以为了避免这样的问题发生呢,那么在这个地方呢,有一个第11步,就是如果我们的。业务系统,如果我们的商户系统没有收到支付通知的时候呢,那么我们的商户平台会主动调用我们的微信平台的一个叫查询订单的接口啊,查询订单的接口好,那么就是这个接口。查询订单。那么在调用查询订单接口的这个过程当中呢,我们查询到支付状态,并且呢,通过微信端给我们返回的这个支付状态,我们来修改我们的订单,然后后续那就是一些发货操作呀,或者是一些其他的操作了,那对于我们的在线教育项目啊这种呃,虚拟产品来说的话,就没有发货操作了,那用户呢,就直接可以查看课程了。
08:23
好,所以这个呢,就是在正常支付的情况下,一个完整的支付流程。
我来说两句