yaoningvital/blog

几种微信支付方式的比较

Opened this issue · 0 comments

https://pay.weixin.qq.com/static/product/product_intro.shtml

类型 概念 发起经过的步骤 备注 需要做的设置
JS-SDK 微信网页授权文档地址

调起支付的方法:wx.chooseWXPay()

通过引入JS-SDK实现JS-SDK提供的一些功能,比如支付等
1. 调微信接口(需要传入appid、redirect_uri),拿到微信返回的 code (code有效期5分钟,此接口调用由前端发起);
2. 拿code去调微信的接口,拿 open_id(此接口调用由后端发起);
3. 引入JS-SDK
4. 通过wx的config接口注入权限验证配置;
5. 前端调后端的接口,拿到下一步调微信 wx.chooseWXPay() 接口需要的参数(timestamp、nonceStr、package、signType、paySign)
6. 调 wx.chooseWXPay 接口,实现微信支付。
(1)步骤1、2可以满足一般的需求,比如实现“免登录”;
(2)要实现微信支付,步骤1-6都需要
(1) 网页授权域名 (可设置 1 个):redirect_uri中设置的页面必须在此域名下,以保证安全。
(2)JS接口安全域名 (可设置 3 个):可在该域名下调用微信开放的JS接口 。
(3)支付授权目录(可设置 5 个):支付请求的链接地址,必须在支付授权目录之下
公众号支付
(JSAPI)
文档地址

调起支付的方法:WeixinJSBridge.invoke

在微信浏览器中打开H5网站,调用微信浏览器中自带的微信对象的支付方法来完成支付。
1. 判断web应用当前是否运行在微信环境,如果是,继续下面的步骤;
2. 调微信接口(需要传入appid、redirect_uri),拿到微信返回的 code (code有效期5分钟,此接口调用由前端发起);
3. 拿code去调微信的接口,拿 open_id(此接口调用由后端发起);
4. 在前端拿到openid之后,调用server端的一个接口,获取调用微信对象的支付方法所需要的一系列参数(timeStamp、nonceStr、package、signType、paySign)。
5. 在拿到上一步的参数之后,两秒之后,再调用微信官方提供的callpay方法,其中调用的是 WeixinJSBridge.invoke 方法,实现微信公众号支付。
WeixinJSBridge 内置对象在其他浏览器中无效。也就是说,WeixinJSBridge 对象只存在于微信环境中,只存在于微信浏览器中。 同上,都需要
小程序支付 文档地址

调起支付的方法:wx.requestPayment()

小程序支付是指商户通过调用微信支付小程序支付接口,在微信小程序平台内实现支付功能;用户打开商户小程序下单,输入支付密码并完成支付后,返回商家小程序。
1. 统一下单:都需要先获取到Openid,调用相同的API;
2. 调起数据签名 :五个字段参与签名(区分大小写):appId,nonceStr,package,signType,timeStamp
3.调用wx.requestPayment() 实现支付
不需要
H5支付 文档地址

H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便地从外部浏览器唤起微信支付。
1.调server端的一个接口(传过去的参数有:appCode、orderNum、payType、terminalType、redirectUrl),拿到一个前端接下来要跳转的地址:mweburl
2. 直接跳转到 mweburl 这个地址,等待它回调回来 ;
3. 它会回调到第1步中传过去的 redirectUrl 参数指定的页面,在这个页面,需要在回调回来后,让用户去点击按钮触发查单操作。
不需要