小程序中用户选择了商品他首先调用下单接口。然后把所请求的数据发送到服务器去。然后我们的服务器API会做库存量检测。
如果库存量检测痛过之后,我们就会保存用户订单,认为他是下单成功,并且我们要把订单检测的相关信息返回到小程序。小程序根据我们服务器这边下单库存量检测结果,决定是否发起支付。如果库存量检测通过也没有出现其他问题那么小程序就认为下单成功,他就要吊用支付的API接口,小程序就要调用我们API的支付接口。
小程序调用支付API,我们的服务器如何处理小程序发起的支付请求呢。我们自己的API是没有办法进行微信支付的。我们需要依靠微信服务器来进行微信支付。我们的API需要调用预订单接口,这个接口就是预先在微信生成微信订单。我们自己的API有我们自己的API,微信呢他有他的订单,这两个订单不一样的。这一步我们成为预订单。预订单的目的是,需要微信服务器返回给我们支付参数,这个支付参数非常重要。这个微信支付不是我们小程序调用我们API支付,API调用我们的微信支付就完了的。首先需要我们的服务器请求支付参数。我们API拿到支付参数,要把支付参数返回小程序,然后小程序拿着支付参数,调用小程序内部的支付API,他在调用微信服务器,这样一个流程。
小程序支付参数是正确的话,他调用微信服务器之后呢,从小程序就会弹出支付界面。这个就是拉起一个请求。弹出这个支付窗口之后呢,用户就可以付款了。在用户做支付行为完成之后,微信首先会直接,他会告诉小程序,你是成功还是失败,这是一个路线,所以最终告诉成功还是失败的是微信,而不是我们API。同时另外一条路线,就是微信会异步的推送一个支付成功还是失败的请求,到我们API里,他通过这样的方式即告诉小程序成功还是失败,同时呢,他也通过另外的异步推送,告诉我们服务器,支付成功还是失败。这是异步的,而且不会只请求一次,她会每隔一段时间6s左右,一直到我们服务器做出正确处理的相应,之后才会停止发送,否则到请求限制之前一直发送。