快速开发微信小程序之二-微信支付

一、背景

在面试程序员的时候,有两项经历会带来比较大的加分,第一你是否做过支付金融相关的业务,第二你是否写过底层框架中间件代码,今天我们聊一下微信支付是如何对接的。

二、相关概念

1、微信商户平台

要使用微信支付,第一步就是要先入驻微信商户平台,准备好你的企业营业执照、法人身份证等完成入驻,平台就会给你生成 MCH_ID(商户ID)、MCH_KEY(商户密钥)、然后申请开通支付产品类型、操作证书、绑定银行卡等等。

2、接入模式

直连模式

           商家自行开发系统对接微信支付进行交易,微信支付将资金结算到商户的结算账户.

服务商模式

            商家没有自己系统,而是由微信支付官方注册入驻的系统开发商提供协助完成入驻,好像有赞就干了这个事。

3、支付产品类型

JSAPI网页支付:即公众号支付,在公众号网页点支付唤起支付控件。

小程序支付:小程序对接微信支付API 实现用户在小程序内完成交易场景。

另外还有线下付款码支付扫码支付,这个就是付款的时候常问的话,你扫我还是我扫你?

另外还有AppSDK支付、H5支付等。

三、相关接口

1、统一下单

微信的各种支付产品类型(除付款码)都需要先调用统一下单接口,在微信后台生成预支付交易单,然后按各种不同的支付场景唤起对应的各支付控件。

请求参数:APPID\MCH_ID\随机串、订单编码、商品相关信息、价格、支付成功回调地址等。

返回值:预支付交易会话ID

两次签名概念

第一次签名:调用统一下单接口的签名

第二次签名:对预支付交易会话ID+APPID+随机串签名然后返回给小程序端,小程序端拿到这个签名串调接口唤起支付窗口。

2、wx.requestPayment

小程序端调用requestPayment唤起支付窗口,输入支付密码支付成功,微信服务端就会回调你在预支付时传过去的回调地址。

请求参数:预支付二次签名生成的串

快速开发微信小程序之二-微信支付_第1张图片

3、支付回调通知接口

回调时做一下解签,返回商户订单号,微信平台生成的支付单号(便于对账)、实际用户支付金额、支付时间等。

4、申请退款接口

原路退还、超过一年无法退款,可以部分退款,退款接口调用时需要加载操作证书进行双向认证。PS:我们没有给用户提供该接口,而是做在管理系统里,当客户需要退款时打热线电话找客服退,垂直电商和平台电商做法还是有些区别。

5、查询退款接口

微信退款有延迟,零钱支付20分钟原路返回,如果是银行卡3个工作日,PS:不确定现在是否有调整.

四、微信支付调用时序图

快速开发微信小程序之二-微信支付_第2张图片

PS:在开发时如果是三方及以上的系统交互最好把时序图画出来,这样便于整体理解,一般开发用的多的就是流程图(产品逻辑)、ER图(数据流)、类图(代码结构)、时序图(代码交互)基本上就差不多了。

你可能感兴趣的:(杂项,微信小程序,微信,小程序)