微信扫一扫二维码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input id="wxcode" type="button" class="test" value="微信扫一扫"/>
</body>
<script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
$.ajax({
type : "GET",
url : "后台的获取的api接口",
dataType : "json",
success : function(data) {
console.log(data)
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: data.appId, // 必填,公众号的唯一标识
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.nonceStr, // 必填,生成签名的随机串
signature: data.signature,// 必填,签名,见附录1
jsApiList: [
'checkJsApi',
'scanQRCode'// 微信扫一扫接口
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.error(function(res) {
alert("出错了:" + res.errMsg);//这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
});
}
});
wx.ready(function() {
wx.checkJsApi({
jsApiList : ['scanQRCode'],
success : function(res) {
console.log('111');
}
});
//点击按钮扫描二维码
$('#wxcode').click(function(){
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
alert(result);
},
});
})
});
</script>
</html>
invalid signature签名错误
- 确认签名算法正确,可用mp.weixin.qq.com/debug/cgi-b… 页面工具进行校验。
- 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
- 确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括
'http(s)://'
部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。 - 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
- 确保一定缓存access_token和jsapi_ticket。
- 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
the permission value is offline verifying (我遇到这种错误可能是值传的不对)
- 确认config正确通过。
- 如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。
- 确认config的jsApiList参数包含了这个JSAPI。
如何生成 "timestamp" , "nonceStr","signature"
案例代码
demo.open.weixin.qq.com/jssdk/sampl…
备注:链接中包含php、java、nodejs以及python的示例代码供第三方参考,第三方切记要对获取的accesstoken以及jsapi_ticket进行缓存以确保不会触发频率限制。 下载完后只需要填写Appid,AppSecret调用这个函数返回的值就是你所需要的参数
微信公众平台接口测试帐号申请
你可能先需要获取一下 临时的AppId
,AppSecret
微信扫一扫BUG
在扫描后返回时,有时候不能alert()弹窗,但是写在回调函数的js代码会被执行,但是不能够弹窗 alert()在扫描后只能执行一个