微信公众号开发纪要(4)-调用微信扫一扫功能
admin
2023-02-10 04:40:13
0次

在微信公众号页面中调用微信扫一扫功能,就是调用微信JS-SDK。让JS-SDK完成调用摄像头扫描,然后我们将扫描结果进行业务操作。微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。如何调用微信JS-SDK,在微信公众平台技术文档中的微信网页开发——》微信JS-SDK说明文档中有详细说明。调用微信JS-SDK需要五个步骤。

步骤一:绑定域名

步骤二:引入JS文件

步骤三:通过config接口注入权限验证配置

步骤四:通过ready接口处理成功验证

步骤五:通过error接口处理失败验证

1、绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

备注:登录后可在“开发者中心”查看对应的接口权限。

微信公众号开发纪要(4)-调用微信扫一扫功能

点击提交后,会弹出配置成功的提示。这里特别提醒注意:填写域名时,不要带http:// 。 只要你带了,步骤三的权限验证肯定报错。会报URL配置的错误。

2、引入JS文件

在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

备注:支持使用 AMD/CMD 标准模块加载方法加载

3、通过config接口注入权限验证配置

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名
    jsApiList: [] // 必填,需要使用的JS接口列表
});

这个配置信息可以写在一个ajax内,在进入页面时首先执行,在后台将对应的信息全部获取,再返回给前端。

前端页面代码:

$.ajax({
    type:"post",
    url:"这里写你自己的请求地址”,
    data:{},
    success:function(data){
        var result = $.parseJSON(data);
      wx.config({         
          debug: true,
          appId: result.appId,                           //公众号的唯一标识
          timestamp: ""+result.timestamp,    //生成签名的时间戳
          nonceStr:result.noncestr,                  //生成签名的随机串
           signature:result.signature,              //签名
           jsApiList : [ 'scanQRCode' ]   //需要使用的JS接口列表(我只需要调用扫一扫的接口,如有多个接口用逗号分隔)
          });
      }
});

 

后端代码就是生成签名。如何生成签名,微信公众号已经给出了官方例子。照着官方例子打一遍代码就行了。下载地址:http://demo.open.weixin.qq.com/jssdk/sample.zip。

这里特别强调的事情:生成签名的url一定是你调用JSSDK的页面url,不能是以前的URL。因为我后端是用springmvc实现的,写的时候没有重定向。虽然页面到了调用页面但URL还是原来的,所以总是报签名错误。测了很多次,才改过来。

4、通过ready接口处理成功验证

wx.ready(function(){
   // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
   //config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
    //  则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,
   //则可以直接调用,不需要放在ready函数中。
});

 

因为我是加载页面就调用微信扫一扫,所以将相关接口就放在了ready函数中。

  wx.ready(function() {
        document.querySelector('#scan').onclick = function() {
            wx.scanQRCode({
                needResult: 1,   // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
                success: function(res) {         

               //res.resultStr可以获得扫描结果。这里写自己的业务操作代码}
            });
        }
    });

5、通过error接口处理失败验证

wx.error(function(res){
   // config信息验证失败会执行error函数,如签名过期导致验证失败,
   //具体错误信息可以打开config的debug模式查看,
     //也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});

wx.error(function(res) {
    alert("出错了:" + res.errMsg);//这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
});

终于大功告成。最后附上微信公众号关于JSSDK调用的示例DEMO。

DEMO页面:http://demo.open.weixin.qq.com/jssdk

微信公众号开发纪要(4)-调用微信扫一扫功能

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...