logo科技微讯

微信支付 WeixinJSBridge 和 chooseWXPay

作者:科技微讯
日期:2022-05-13
📝 笔记

首先我们用 js-api 完成支付下单,拿到 prepay_id 之后,接下来就是拉起支付界面。拉起支付界面有 2 种方式

  • 在公众号前端使用 wx.chooseWXPay(options)
  • 在公众号前端使用 WeixinJSBridge.invoke('getBrandWCPayRequest',options, callback)

第一种方法需要引入公众号网页开发的 jssdk,需要拿到 ticket、签名之后,再 wx.config(),通过 wx.config() 指定获取哪些权限。而第二种方法不需要以上步骤,只需要判断 WeixinJSBridge 这个对象在 window 是否存在,存在了就直接 invoke 某个功能,例如 getBrandWCPayRequest、、getUserConfig、imagePreview 等。

在小程序的技术发展史上,微信解释了 js-sdk 和 WeixinJSBridge 的关系:

​ 实际上,微信官方是没有对外暴露过 WeixinJSBridge.invoke 这种调用方法,此类 API 最初是提供给腾讯内部一些业务使用,很多外部开发者发现了之后,依葫芦画瓢地使用了,逐渐成为微信中网页的事实标准。2015 年初,微信发布了一整套网页开发工具包,称之为 JS-SDK,开放了拍摄、录音、语音识别、二维码、地图、支付、分享、卡券等几十个 API。给所有的 Web 开发者打开了一扇全新的窗户,让所有开发者都可以使用到微信的原生能力,去完成一些之前做不到或者难以做到的事情。

在微信支付 api v3 的开发文档中,微信官方给出了使用 WeixinJSBridge 在前端唤起微信支付界面的代码示例,即上述第二种方法。在这个页面中,微信表示:

  • WeixinJSBridge 这个对象仅存在于在微信内部打开的网页,所以在使用 WeixinJSBridge.invoke 前需要先判断 window 对象是否有 WeixinJSBridge;
  • 使用 js-sdk 和使用 WeixinJSBridge 发起微信支付,支付成功后返回的值不同:唤起支付返回的 res 对象驼峰式是 JSSDK 返回的格式,而 err_msg 是 WeixinJSBridge 返回的格式,如商户使用不同的方式,此处响应的字符大小写、格式需注意。

网友发现 WeixinJSBridge 在安卓不稳定,可能无法唤起微信支付。

donation赞赏
thumbsup0
thumbsdown0
暂无评论