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

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

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

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

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

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

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

[java]
view plain
copy

@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标签里。

[plain]
view plain
copy

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!DOCTYPE html>  
<html>  
<head>  
<meta http-equiv="Content
4000
-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显示,效果如下:

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