今天我们分析一下,商城项目的业务中,必不可少的支付环节,现在主流的微信支付,几乎是每一个商城项目都必备的支付方式,我们来分析一下微信支付的业务。

第一、架构层面

项目中的支付,一般都会独立成一个模块,很多时候会独立成一个服务。因为调用支付的业务线一般都有好几条,比如商城下单后支付订单,比如商城购买高级会员或者续费,比如saas服务中购买某个插件或者某些功能等等。这些业务都会用到支付,没必要把支付放到商城模块下,更好的做法是把支付抽离出来,和各个模块形成松耦合。

第二、接口层面

微信支付的官方文档:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4

微信支付

微信官方的文档来看的话,主要提供的接口有这10个,但我们并不是都要是用这10个接口,主要的接个我们介绍一下

1. 统一下单接口。这个接口就是平时,你点击去支付,创建完订单,小程序会调起微信的支付页面,让用户输入密码。就是这个接口,通过这个接口,可以获取到前端用来调起支付的加密信息等,同时会返回一个预支付id,这个我们可以保存在后端,作为用户调起支付的一个凭据。

2.订单关闭接口。这个接口,是当我们的订单支付超时的时候,取消自己系统业务订单的同时,也要取消微信的订单,也就是第一个接口下单后,在微信端创建的一个接口。这个接口只需要我们传一个订单id,也就是第一个接口时传入的订单id即可取消。

3.支付结果通知接口。这个接口就是我们平时说的支付回调的接口,当用户输入密码,支付成功之后,会回调我们第一个接口中传的回调地址。我们收到这个回调之后,对接口的参数做一堆处理,从而完成支付成功的业务。支付回调时,会把统一下单接口的订单id带过来,同时也会带过来微信那边的一个流水号,420开头的,这个一定要好好保存,因为这个是我们和微信系统对账的一个重要凭据。

4.申请退款接口。这个是一个同步申请退款的接口。当用户端发起退款,去调微信退款,就是这个接口。这个接口会返回一个退款的订单的id,还有退款的流水号,5开头的,也要好好保存。退款的时候,允许部分退款。

当然还有一些接口,有机会的话,以后可以再慢慢聊,实现基本业务的话,这些接口已经足够使用。

第三、注意的问题

1.取消crm订单时一定要也关闭微信的订单,不然用户打开输入密码的框, 一直不付款,订单都超时了,才付款,微信成功回调过来, 处理业务却发现订单已经超时

2.微信退款时,必须要有退款证书才能退,支付时不用

3.微信支付和退款时,微信调用过来入参和退款时的信息, 要全部保存起来, 方便对账. 一定要保存微信端的流水号, 42..开头的, 退款的流水号52..开头的, 对账时很关键

4.微信支付的服务商模式, 有服务商appId,子商户appid,服务商商户id,子商户商户id,用户的openid, 是在子商户的openid

5.部分退款时, 退款的totalFee总金额, 是整笔订单的总金额,还有一个refundFee才是这次需要退款的金额.

对商城项目中微信支付的分析就是这些,希望对大家做微信支付有所帮助。