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

来源:互联网 发布:淘宝药店 编辑:程序博客网 时间:2024/05/21 17:27

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

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

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

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

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

[java] view plain copy
  1. @RequestMapping("ansy/get2dBarCode")  
  2.     public Callable<String> get2dBarCode(final Model model, String userId, final HttpServletRequest request) {  
  3.         return new Callable<String>() {  
  4.             @Override  
  5.             public String call() throws Exception {  
  6.                 if (userId != null && !userId.equals("")) {  
  7.                     BarCode barCode = barCodeService.getBarCodeByUserId(Long.parseLong(userId));  
  8.                     // 生成过  
  9.                     if (barCode != null && barCode.getUser2dBarCode() != null&& !barCode.getUser2dBarCode().equals("")) {  
  10.                         model.addAttribute("ticket", barCode.getUser2dBarCode());  
  11.                     } else { // 如果没有生成过  
  12.                         String accessToken = coreService.getWeixinAccessToken();  
  13.                         if (accessToken != null && !accessToken.equals("")) {  
  14.                             String create2dBarCodeUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+ accessToken;  
  15.                             Object param = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": "  
  16.                                     + userId + "" + "}}}";  
  17.                             String returnData = Common.sendPost(create2dBarCodeUrl, param);  
  18.                             JSONObject json = JSONObject.fromObject(returnData);  
  19.                             if (json.get("ticket").toString() != null && !json.get("ticket").toString().equals("")) {  
  20.                                 model.addAttribute("ticket", json.get("ticket").toString());  
  21.                                 // 将2dBarCodeTicket存进barCode表  
  22.                                 BarCode tempBarCode = new BarCode();  
  23.                                 tempBarCode.setUser2dBarCode(json.get("ticket").toString());  
  24.                                 tempBarCode.setUserId(Long.parseLong(userId));  
  25.                                 barCodeService.add(tempBarCode);  
  26.                             }  
  27.                         }  
  28.                     }  
  29.                 }  
  30.   
  31.                 return Common.BACKGROUND_PATH + "/api/2dBarCode";  
  32.             }  
  33.         };  
  34.   
  35.     }  
3)通过ticket获取二维码:

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

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

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

阅读全文
0 0
原创粉丝点击