您的位置:首页 > 移动开发 > 微信开发

生成带参二维码--微信公众平台开发(二)

2016-10-17 16:57 387 查看
微信公众号平台的生成二维码接口,生成的二维码里面保存的地址是当前公众号的URL,如果用户未关注公众号,扫描此二维码便会自动跳转到公众号关注页面;如果用户关注了此公众号,再次扫描二维码便会直接进入公众号。

生成二维码的时候可携带自定义的参数,譬如携带上生成者的userId,这样二维码分享出去的时候,别人扫描了此二维码关注了公众号,我们便能知道哪些人扫描了谁的二维码关注了公众号,方便做推广统计。

生成带参二维码总共需要3步:

1:获取access_token,方法参见:http://blog.csdn.net/qq_33556185/article/details/52758781

2:调用带参二维码接口创建二维码:

@RequestMapping("ansy/get2dBarCode")
public Callable<String> get2dBarCode(final Model model, String userId, final HttpServletRequest request) {
return new Callable<String>() {
@Override
public String call() throws Exception {
if (userId != null && !userId.equals("")) {
BarCode barCode = barCodeService.getBarCodeByUserId(Long.parseLong(userId));
// 生成过
if (barCode != null && barCode.getUser2dBarCode() != null&& !barCode.getUser2dBarCode().equals("")) {
model.addAttribute("ticket", barCode.getUser2dBarCode());
} else { // 如果没有生成过
String accessToken = coreService.getWeixinAccessToken();
if (accessToken != null && !accessToken.equals("")) {
String create2dBarCodeUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+ accessToken;
Object param = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": "
+ userId + "" + "}}}";
String returnData = Common.sendPost(create2dBarCodeUrl, param);
JSONObject json = JSONObject.fromObject(returnData);
if (json.get("ticket").toString() != null && !json.get("ticket").toString().equals("")) {
model.addAttribute("ticket", json.get("ticket").toString());
// 将2dBarCodeTicket存进barCode表
BarCode tempBarCode = new BarCode();
tempBarCode.setUser2dBarCode(json.get("ticket").toString());
tempBarCode.setUserId(Long.parseLong(userId));
barCodeService.add(tempBarCode);
}
}
}
}

return Common.BACKGROUND_PATH + "/api/2dBarCode";
}
};

}
3)通过ticket获取二维码:

在jsp里面调用通过ticket换取二维码接口,直接将二维码显示在image标签里。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.js"></script>
<title>推广二维码</title>
<script>
window.onload=function show2dBarCode(){
$("#imageId").attr("src","https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+document.getElementById("ticket").value);
}
</script>
</head>
<body>
<input type="hidden" value="${ticket }" id="ticket"/>
<div align="center">
<image id="imageId" src="" width="90%" style="max-width: 400px;">
<br/>
<small style="color: gray">扫一扫上面的二维码,关注蝌蚪冷暖在线公众号</small>
</div>
</body>
</html>


最后将此二维码页面嵌入app显示,效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息