1、概述
微信支付,大家都听说过,使用方便,对接也很方便。
项目中如果存在支付需求,通常都会想到微信支付和支付宝支付。
今天就简单讲讲微信支付的对接流程与实现。
2、微信支付的方式
微信支付主要包含以下支付方式:
1)JSAPI支付:在微信内部打开前端页面,支付时使用 JSAPI 接口调起微信支付模块完成收款。
2)APP支付:在 IOS 或 安卓 开发的 APP 中,调起微信支付模块完成收款。
3)H5支付:在手机的 某浏览器APP 中打开前端页面,支付时通过url跳转到微信的支付中间页,调起微信支付模块完成收款。
4)Native支付:通常是在PC的浏览器打开前端页面,支付时生成收款二维码,使用手机微信扫描收款二维码完成收款。
5)小程序支付:在小程序中调起微信支付模块完成收款。
6)付款码支付:用户出示微信钱包中的条码、二维码,商家通过专用的硬件设备扫描用户条码完成收款。
7)刷脸支付:用户在集成微信刷脸支付SDK的线下硬件机具上"刷脸"完成支付。
这里我们主要介绍一下前5种支付方式。
3、支付流程概述
虽然支付方式不同,但支付流程都是大同小异,下面我们就来简单介绍一下:
步骤一:生成订单
步骤二:调用微信的下单接口
步骤三:调起微信支付
步骤四:接收微信支付结果通知
4、订单状态
根据支付流程,订单的状态可以大致分为:待支付、支付中、支付成功、支付失败。
5、步骤一:生成订单
该步骤不需要与微信的接口交互,完全是业务系统自己的逻辑,主要是记录订单中商品的明细、数量、金额等信息。
生成订单后,订单的初始状态为 待支付。
6、步骤二:调用微信的下单接口
订单生成后,去调用微信的下单接口,在微信支付服务后台生成预支付交易单。
注:微信下单接口会用到appid(应用ID)和mchid(直连商户号),可以提前在 微信公众平台、微信开放平台 和 微信支付平台 申请好相应的信息。
不同支付方式调用的接口不同,接口的返回值也不相同:
1)JSAPI支付、小程序支付
这两种支付方式调用的是 JSAPI下单接口 https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi
返回值是 prepay_id(预支付交易会话标识)
2)APP支付
调用 APP下单接口 https://api.mch.weixin.qq.com/v3/pay/transactions/app
返回值是 prepay_id(预支付交易会话标识)
3)H5支付
调用 H5下单接口 https://api.mch.weixin.qq.com/v3/pay/transactions/h5
返回值是 h5_url(支付跳转链接)
4)Native支付
调用Native下单接口 https://api.mch.weixin.qq.com/v3/pay/transactions/native
返回值是 code_url(二维码链接)
在调用微信下单接口时,有一个必填字段 notify_url(通知地址),指定了本次支付的回调地址。
微信下单接口调用成功后,订单的状态可更改为 支付中,如果调用不成功则订单状态改为 支付失败。
7、步骤三:调起微信支付
微信下单接口调用成功后,可根据不同的支付方式调起微信支付。
1)JSAPI支付
前端页面使用微信支付提供的前端JS方法调起微信支付,此处会用到微信下单接口返回的 prepay_id(预支付交易会话标识)。
2)APP支付
APP端使用微信支付提供的SDK调起微信支付,此处会用到微信下单接口返回的 prepay_id(预支付交易会话标识)。
3)H5支付
前端页面直接重定向到微信下单接口返回的 h5_url(支付跳转链接) 地址调起微信支付中间页,完成支付。
4)Native支付
前端将微信下单接口返回的 code_url(二维码链接)转换成二维码图片,用户通过手机微信扫码进行支付。
5)小程序支付
小程序端使用 wx.requestPayment 方法调起微信支付,此处会用到微信下单接口返回的 prepay_id(预支付交易会话标识)。
如果调起失败,将订单状态改为 支付失败。
8、步骤四:接收微信支付结果通知
当微信端有了支付结果后,会回调通知业务系统支付的结果,回调参数中包含业务订单号(调用微信下单接口时指定的),根据业务订单号,更新订单的状态。
在接收到微信支付结果通知之前,可为用户展示一个 支付中 的等待页面,定时向后台请求订单状态,当订单状态由支付中变为其他状态,则支付完毕,将最终状态展现给用户。
9、综述
好了,讲到这里,大家对微信支付应该有个初步的认识, 欢迎多多交流。
网友评论