调用微信公众平台扫一扫示例及解决接口报错 { "errMsg": "config:invalid signature" }
一、解决报错问题
单从报错信息 invalid signature 就可以看出是 签名signature 有问题,

查了很多资料,终于知道了问题点,
后台让我直接调接口是不对的,签名是根据请求接口的页面url来生成的,所以url要动态地传给后台,而且这个页面url还要除去'#'hash部分,可用 location.href.split('#')[0] 获取,需不需要 encodeURIComponent 进行编码询问后台,有的需要有的不需要。
eg:
    var pageUrl ={
        url:(window.location.href).split('#')[0]
    };
    $.ajax({
        url:"/get-sign"+"?action=get_sign_package",
        type:"post",
        data:pageUrl,
        success:function(data){
            var params = JSON.parse(data);
            /*配置 wx.config 参数*/
            wx.config({
                debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: params.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
                timestamp: params.timestamp, // 必填,生成签名的时间戳
                nonceStr: params.nonceStr, // 必填,生成签名的随机串
                signature: params.signature,// 必填,签名,见附录1
                jsApiList: [
                    'checkJsApi',
                    'scanQRCode'
                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
            });
        }
    });
经过上述修改,就能成功取到需要的参数。
二、调用微信扫一扫
经过上面成功配置微信参数,你就可以在你想使用微信接口的地方直接使用了,以扫一扫为例:
wx.ready(function(){
        wx.checkJsApi({  //判断当前客户端版本是否支持指定JS接口
            jsApiList: [
                'scanQRCode'
            ],
            success: function (res) {// 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
                if(res.checkResult.scanQRCode != true){
                    alert('抱歉,当前客户端版本不支持扫一扫');
                }
            },
            fail: function (res) { //检测getNetworkType该功能失败时处理
                alert('checkJsApi error');
            }
        });
    });
    /*处理失败验证*/
    wx.error(function (res) {
        alert("share error: " + res.errMsg);
    });
如果是事件触发调用接口的话,就把对应调用写在事件里面:
$(document).on('click','#scanQRCode',function(){
        wx.scanQRCode({
            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
            scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
            success: function (res) {
                scanSuc(res);  // 扫描成功的回调函数
            },
            error: function(res){
                if(res.errMsg.indexOf('function_not_exist') > 0){
                    alert('版本过低请升级')
                }
            }
        });
    });
调用微信公众平台扫一扫示例及解决接口报错 { "errMsg": "config:invalid signature" }的更多相关文章
- 微信分享链接出现config:invalid signature错误的解决方法
		首先贡献jssdk下载地址:http://demo.open.weixin.qq.com/jssdk/sample.zip 不建议大家在*SDN上花钱买积分下载 当开发微信时需要做特定的页面做分享时 ... 
- 第三方网站不能调用微信公众平台里的图片了 显示"此图片来自微信公众号平台未经允许不可引用"
		下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微 ... 
- Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
		简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ... 
- 【spring cloud】spring cloud 使用feign调用,1.fallback熔断器不起作用,2.启动报错Caused by: java.lang.ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.Hystri解决
		示例GitHub源码地址:https://github.com/AngelSXD/springcloud 1.首先使用feign调用,需要配置熔断器 2.配置熔断器需要将熔断器注入Bean,熔断器类上 ... 
- 微信jssdk 返回的 config invalid signature
		这几天一直在调试wxjssdk,按照api的需求,http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html ,先是根据a ... 
- 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2
		今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ... 
- asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理
		1.调用wsdl接口,首先需要将wsdl文件转换为cs文件: 进入VS 开发人员命令提示行,输入如下命令: c:/Program Files/Microsoft Visual Studio 8/VC& ... 
- .Net 调用微信公众号扫一扫
		1.绑定域名 去微信公众号平台中设置js接口安全域名,要注意的是不填写http://, 只填写域名即可,如 www.baidu.com. 一个月只能修改三次,要谨慎填写. 2.引入JS文件 在页面中引 ... 
- Java微信公众平台开发之扫码支付模式二
		官方文档点击查看 准备工作:已通过微信认证的公众号,域名可以不通过ICP备案借鉴了很多大神的文章,在此先谢过了大体过程:根据固定金额和商品的ID先生成订单,再生成二维码,客户扫一扫付款模式二支付的流程 ... 
随机推荐
- Docker Compose编排工具部署lnmp实践及理论(详细)
			目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ... 
- php多版本配置
			需求分析: 需要在一台装有php5.4的测试服务器跑的上php7.2.x的项目 安装phpenv(php版本控制) $ sudo yum install git $ mkdir -p repos/gi ... 
- Linux基础之终端、控制台、tty、pty等概念简介
			基本概念: 1>tty(终端设备的统称): tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘阅读和发送信息的东西,后来这东西被 ... 
- Selenium(十三)调用js,控制浏览器的滚动条
			WebDiver 不能操作本地 Windows 控件,但对于浏览器上的控件也不是都可以操作的.比如浏览器的滚动条,虽然 WebDriver 提供操作浏览器的前进和后退按钮,但对于滚动条并没有提供相应用 ... 
- nginx 环境 thinkphp 隐藏index.php
			tp官网已经写了 http://doc.thinkphp.cn/manual/hidden_index.html 不生效 重启nginx .问题依旧 kill掉nginx进程 再启动 贴段自己的配置 ... 
- MLP多层感知机
			@author:wepon @blog:http://blog.csdn.net/u012162613/article/details/43221829 转载:http://blog.csdn.net ... 
- python中的函数、生成器的工作原理
			1.python中函数的工作原理 def foo(): bar() def bar(): pass python的解释器,也就是python.exe(c编写)会用PyEval_EvalFramEx(c ... 
- [GraphQL] Query Lists of Multiple Types using a Union in GraphQL
			Unions are used when we want a GraphQL field or list to handle multiple types of data. With a Union ... 
- storm 安装配置
			1.1.下载安装包 storm.apache.org 配置zookeeper:http://www.cnblogs.com/eggplantpro/p/7120893.html 1.2.解压安装包ta ... 
- sql 存储过程set nocount on 的作用
			在存储过程中,经常用到SET NOCOUNT ON: 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息.当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT ... 
