都说2018最火的应用是微信小程序,短短一年内覆盖了200多个行业,每天以上万的注册数量在增加。开发人员在做微信小程序时,难免会涉及到有关小程序的支付功能的开发。
微信小程序支付的主要逻辑集中在后端,前端只需携带支付所需的数据请求后端接口然后根据返回结果做相应成功失败处理即可。支付主要分为几个步骤:前端携带支付需要的数据(商品id,购买数量等)发起支付请求;后端在接收到支付请求后,处理支付数据,然后携带处理后的数据请求微信服务器的支付统一下单接口;后端接收到上一步请求微信服务器的返回数据,再次处理,然后返回前端让前端可以开始支付;前端进行支付动作;前端支付完成后,微信服务器会向后端发送支付通知,后端根据这个通知确定支付完成,然后就去做支付完成后的相应动作,比如修改订单状态,添加交易日志。从这几个步骤可以看出,后端主要的作用就是将支付需要的数据传给微信服务器,再根据微信服务器的响应确定支付是否完成。
各个步骤的具体实现。
1. 前端请求支付
前端请求支付,就是简单的携带支付需要的数据,例如用户标识,支付金额,支付订单 ID 等等跟你的业务逻辑有关或者跟下一步请求微信服务器支付统一下单接口需要的数据有关** 的相关数据,使用微信小程序的 wx.request( ) 去请求后端的支付接口。
2. 后端请求微信服务器
后端接收到前端发送的支付请求后,可以进行一下相关验证,例如判断一下用户有没有问题,支付金额对不对等等。在验证没什么问题,可以向微信服务器申请支付之后,后端需要使用微信规定的数据格式 去请求微信的支付统一下单接口。
在处理好所有数据后,将这些数据以 XML 格式整理并以 POST 方法发送到微信支付统一下单接口
3.后端接受微信服务器返回数据
微信服务器在接收到支付数据之后,如果数据没有问题,其会返回用于支付的相应数据,其中非常重要的是 名称为 prepay_id 的数据字段,需要将此数据返回前端,前端才能继续支付。
因此,在后端接收到微信服务器的返回数据后,需要进行相应的处理,最终返回到前端数据,后端的支付接口已经完成了接收前端支付请求,并返回了前端支付所需数据的功能。
4. 前端发起支付
前端在接收到返回数据后,使用 wx.requestPayment() 来请求发起支付。此 API 需要的对象参数各项值就是我们上一步返回的各个数据。
5.后端接受微信服务器回调
前端完成支付后,微信服务器确认支付已经完成。就会向第一步中设置的回调地址发送通知。后端的接收回调接口在接收到通知后,就可以判断支付是否完成,从而决定后续动作。
确认支付后,微信服务器会根据通知result_code字段判断支付是否成功。在接受到成功的通知后,后端需要返回success数据向微信服务器告知已得到回调通知,以此完成支付流程,否则微信服务器会不停的向后端发送消息。
对比后可以发现发现,其实小程序中做支付比公众号支付要省事很多,因为不需要支付授权目录,也不需要授权域名,但是支付流程却比公众号多了一步,就是统一下单是预支付,然后需要对预支付的结果再次签名之后,才调起支付。
推荐阅读:小程序内嵌网页及跳转分享实现
参与讨论
发表评论