几种微信支付方式的比较
Opened this issue · 0 comments
yaoningvital commented
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 参数指定的页面,在这个页面,需要在回调回来后,让用户去点击按钮触发查单操作。 |
不需要 |