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

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

步骤一:绑定域名

步骤二:引入JS文件

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

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

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

1、绑定域名

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

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

点击提交后,会弹出配置成功的提示。这里特别提醒注意:填写域名时,不要带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

原文地址:http://blog.51cto.com/yangxiao/2144442

时间: 2024-10-14 14:34:21

微信公众号开发纪要(4)-调用微信扫一扫功能的相关文章

微信公众号开发纪要(2)-微信公众号接入

当搭建好微信公众号开发环境后,先要和微信公众号建立联系.从本质上来说,微信公众号开发就是如何让自己的服务器与微信服务器进行交互的一个过程. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器.应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端. 通信协议为:HTTP 数据传输格式为:XML 具体的流程如下图所示: 来一张更加直观的图吧: 我们需要做的事情,就是对微信服务器转发的HT

微信公众号开发纪要(3)-获取用户openid

项目要求做扫描功能前需要进行用户绑定,不是所有的用户都能盘点扫描.这就要求先获取用户的openid(微信公众号的用户唯一凭证),然后与业务系统的用户信息进行验证和绑定.如何获取用户的openid在开发指引中,微信网页授权章节里,做了详细的介绍.获取用户信息,需要四步. 第一步:用户同意授权,获取code第二步:通过code换取网页授权access_token第三步:刷新access_token(如果需要)第四步:拉取用户信息(需scope为 snsapi_userinfo) 1:用户同意授权,获

微信公众号开发_如何接入微信支付?[网页发起支付]

开发背景 在微信公众号中,需要获取支付功能 前提 公众号已经开通支付功能[未开通的自行百度] 实现步骤 接入JSSDK JSSDK使用步骤 参考微信JS-SDK说明文档 使用JSSDK中的 微信支付 API wx.chooseWXPay({ timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写.但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: 'abc', // 支付签名随机串,不长于 32

基于springboot微信公众号开发,几分钟学会微信自动回复

效果图 1.准备工作 申请微信订阅号(个人只能申请订阅号,而且没什么功能,也无法认证),申请完毕,点击 开发=>基本配置,如下图: 服务器配置需要有 域名 80端口,我猜你没有,这里推荐个实用工具,pagekite,下载链接, 这个工具需要 python2.7以上环境,还有邮箱一个,一个邮箱一个月,邮箱这东西大家懂得, 用pagekite申请完域名,就可以用自己的电脑做订阅号服务器了. 2.服务器代码 创建个springboot工程 pom.xml <properties> <pr

微信公众号开发(一)微信验证开发者服务器接口

微信验证开发者服务器接口 微信验证开发者服务器接口 如图所示,开发者可填写自己服务器的验证token的接口地址,以及自定义的token(博主申请的测试号,使用natapp来进行内网穿透) 目的:帮助微信服务器和开发者服务器互相识别,以防恶意攻击 流程图如下(不知道博客园怎么显示md流程图,有知道的仁兄告知):(取自微信公众平台技术文档) st=>start: 开启服务 ipop1=>inputoutput: 接收到数据[不确定是谁发来的] op1=>operation: 尝试提取出sig

微信公众号开发C#系列-9、多公众号集中管理

1.概述 通过前面8篇关于微信开发相关文章的学习,我们已经对微信常用开发有了一个比较深入的了解.前面的文章都是基于某一特定公众号的,在现实业务中同一单位个体运营着不至一个公众号,此时就需要对多个公众号集中管理,随意切换.本篇文章主要介绍多公众号集中管理的方法.表设计.设置默认公众号.生成指定格式的URL资源服务器.刷新Access_Token等. 2.公众号集中管理的方法 我们知道操作微信公众号时微信服务器都会返回相应的信息到我们自己的中转服务器上,涉及多个微信公众号管理时,我们就需要知道是那个

微信公众号开发技术基础(二):外网映射工具ngrok的简介和使用

本文结构:(一)用法(二)示例(三)qydev ngrok的下载链接及相关网站 微信公众号开发的时候,微信服务器是需要访问我们的一个公网服务器地址的,但我们又是在本地调试自己的程序的,那怎样让微信服务器能访问到我们本地的服务器呢?那就需要用外网映射工具,将本地IP映射成公网IP,这样就能在公网上访问本地服务了,这里使用ngrok.ngrok原版程序的服务器是在国外的,访问速度极慢或者干脆访问不了,所以这里提供一个服务器搭建在国内的基于ngrok的一个软件:qydev,百度网盘下载链接见文章结尾.

微信公众号开发系列导航

 1.0.NET微信公众号开发-1.0初始微信公众号 1.0.NET微信公众号开发-1.0初始微信公众号 2.0.NET微信公众号开发-2.0创建自定义菜单  2.0.NET微信公众号开发-2.0创建自定义菜单 3.0.NET微信公众号开发-3.0查询自定义菜单  3.0.NET微信公众号开发-3.0查询自定义菜单 4.0.NET微信公众号开发-4.0公众号消息处理  4.0.NET微信公众号开发-4.0公众号消息处理 5.0.NET微信公众号开发-5.0微信支付  5.0.NET微信公众号开发

微信公众号开发入门心得(一)

一.前言 为了快速了解微信公众号开发过程,我选择了php语言来进行微信公众号开发,选择php的原因有两点,一是网上有很多用php开放微信公众号的教程,可以减少学习成本:二是php也比较容易学习,学习门槛低. 学习php开发微信公众号,开发者需要有一点php基础.对于学过其他编程语言的童鞋,了解一些基本的php语法就可以开始了.我的 PHP基础学习笔记(一) 二.微信公众号开发的步骤 三.微信公众号开发步骤详解   + 微信公众号开发入门可以参考 微信公众平台开发入门教程 教程中用的新浪云做的服务