首先我们先理清微信支付的脉络
参与方:
用户
客户端
商户后台
微信客户端
微信支付系统
相信参与方大家都明白是什么东西,但是我们还要知道他们各自在微信支付中都需要做些什么事情,接下来我们就一起来看看官方的图例吧(图1.1 微信支付)。
图 1.1 微信支付
从上面这张图我们可以粗略的分析出一些东西,下面我就为大家梳理一下吧。
用户需要做的事情:
1,打开客户端app;
8, 点击确认支付按钮;
12,输入自己的微信钱包的密码
客户端需要做的事情:
2,选择商品下单;
3,请求服务器生成订单;
9,调用微信支付页面;
向 商户后台查询支付结果;
展示支付结果;
商户后台需要做的事情:
4,调用统一下单api;
6,生成带签名的客户端支付信息
7,向客户端返回预付款信息和签名信息
接收和保存支付通知
返回告知微信支付系统已经接收到了
查询微信支付结果
返回支付结果
微信客户端需要做的事:
将支付状态通过商户客户端实现的回调执行回调(简单说就是告诉客户端支付结果)
微信支付系统需要做的事:
生成预订单
返回预订单
验证支付参数,支付权限(就是微信支付密码)
验证授权,完成交易
通知微信客户端支付结果
通知商户后台支付结果
在商户后台查询支付结果的时再次返回支付结果
不知道大家懵了没,我在按照自己的理解梳理一下吧:
首先用户在商户客户端点击商品提交订单之后后(这里感觉应该是在用户点击去结算之后),客户端会向商户后台发送请求,这个请求应该是包含用户个人信息和商品信息的,当然还有其他的客户具体看官方demo,商户后台接到这个请求之后会调用统一下单api去让微信支付系统生成预订单,微信支付系统将预订单信息返回给商户后台,再由商户后台生成签名信息将签名信息和预订单信息返回给商户客户端,商户客户端接到返回的数据后会调用微信支付页面(安装了微信的直接打开微信客户端,没有安装就打开内置的h5页面),用户输入密码之后,微信客户端会把这个密码传给微信支付系统,微信支付系统在验证成功并完成支付之后分别给微信客户端和商户后台返回支付结果(返回给商户后台的是异步的),微信客户端通过sdk将支付结果传递给商户客户端,同时商户客户端也会去请求商户后台支付结果(应该以这一次请回返回的数据为准),商户后台
如果收到过异步的支付信息为直接返回支付结果,如果没有收到会再次请求微信支付系统,由微信支付系统再次返回支付结果(异步),商户后台接到支付结果,将支付结果返回商户客户端,由商户客户端提示用户支付完成交易结束。这就是完整的微信支付流程。