使用JS-SDK调用微信扫一扫,需要有公众号支持,通过公众号生成JS-SDK使用权限签名。本文直接调用已封装好的接口来获取随机数(noncestr)、时间戳(timestamp)、签名(signature),接口地址:http://xx.xx.com/xxmap/wechat/jsapi/getSignature.do?appId=APPID&url=URL。appId是公众号的标识,url是需要调用微信扫一扫的页面的地址,需要进行encodeURIComponent编码。
调用微信扫一扫前端页面代码:
var purl = encodeURIComponent(location.href);
$.ajax({
url:"voucherController.do?getSignature",
data:{"url":purl},
type:"POST",
dataType:"json",
success:function(result){
wx.config({
debug:false,
appId:result.obj.appId,
timestamp:result.obj.timestamp,
nonceStr:result.obj.noncestr,
signature:result.obj.signature,
jsApiList:['scanQRCode']
});
},
error:function(){
alert("请求失败");
}
});
function scanQr(){
var ua = navigator.userAgent.toLowerCase();
var isWeiXin =ua.indexOf('micromessenger') != -1;
if(!isWeiXin){
alert('请用微信打开链接,才可使用扫一扫!');
}
wx.scanQRCode({
needResult:1,
scanType:["qrCode"],
success:function (res) {
var scan = res.resultStr;
location.href=scan;
},
error:function(res) {
if(res.errMsg.indexOf('function_not_exist') > 0){
alert('当前版本低,请进行升级!');
}
}
});
}
wx.error(function(res){
alert(res.errMsg);
});
//$(function(){
// setTimeout("scanQr()","1000");
//});
调用微信扫一扫后端代码:
@RequestMapping(params = “getSignature”)
@ResponseBody
public AjaxJson getSignature(String url){
AjaxJson j = new AjaxJson();
String sigUrl = “http://xx.xx.com/xxmap/wechat/jsapi/getSignature.do?appId=APPID&url=” + url;
//Get请求接口,获取随机数、时间戳、签名
JSONObject jsonObject = HttpRequest.sendGet(sigUrl);
JSONObject jsonObj = JSON.parseObject(jsonObject.getString(“result”));
jsonObj.put(“appId” ,APPID);//公众号appid
j.setObj(jsonObj);
return j;
}
注意:jweixin-1.0.0.js的引用,使用vConsole调试,IOS系统可能会出现找不到变量:wx异常,这个时候可以直接把整个jweixin-1.0.0.js复制到你的JS中,就可以解决。