今天我们分析一下,商城项目的业务中,必不可少的支付环节,现在主流的微信支付,几乎是每一个商城项目都必备的支付方式,我们来分析一下微信支付的业务。
第一、架构层面
项目中的支付,一般都会独立成一个模块,很多时候会独立成一个服务。因为调用支付的业务线一般都有好几条,比如商城下单后支付订单,比如商城购买高级会员或者续费,比如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才是这次需要退款的金额.
对商城项目中微信支付的分析就是这些,希望对大家做微信支付有所帮助。
今天我们聊一聊商城项目的业务中关于缓存的使用。在前面的内容中,我们已经介绍过商城业务中的核心接口,创建订单,https://www.inbai.net/article/141.html,在这篇文章里,我们详细介绍了创建订单的流程,不过我们更多的讨论的是业务分析,而没有深入去研究创建订单的性能。那么,今天我们就关于商城项目的性能方面,展开我们的话题,也就是在合适的地方使用上合适的缓存机制。
今天我们分析一下,商城项目的业务中,必不可少的支付环节,现在主流的微信支付,几乎是每一个商城项目都必备的支付方式,我们来分析一下微信支付的业务。项目中的支付,一般都会独立成一个模块,很多时候会独立成一个服务。因为调用支付的业务线一般都有好几条,比如商城下单后支付订单,比如商城购买高级会员或者续费,比如saas服务中购买某个插件或者某些功能等等。这些业务都会用到支付,没必要把支付放到商城模块下,更好的做法是把支付抽离出来,和各个模块形成松耦合。
今天尹白和大家一起分析商城项目中的创建订单的业务.通过这次对商城服务的核心业务中的创建订单的分析和解刨,对商城的订单有一个全面的认识。在商城业务当中,创建订单的接口,可以说是整个商城的业务当中最重要的接口。通过创建订单,真正建立了一个商品与用户的联系。