微信公众号开发系列(三)公众号生成二维码

首先第一步得到一个二维码ticket,这个主要就是一个换取凭证的过程,可以类别于坐高铁的车票。我们看下这个api

这里的32位是指二进制数,按照你想传参的类型选则是id还是str,通过action_name可以决定二维码是否是永久的,下面是参数json结构

{
  "action_info": {
    "scene": {
      "scene_id": 12
    }
  },
  "action_name": "QR_SCENE",
  "expire_seconds": 7200
}

发送post请求,部分代码清单

如果成功会有下面的返回值,如果时永久的就没有过期时间字段。

首先是api,非常简单

那么上代码

public void generateQrCodeOfficial(JSONObject ticketJson, HttpServletResponse response) {
        StringBuilder sb = new StringBuilder(WxOaUrlConfig.API_SHOW_QR_CODE);
        try {
            sb.append("ticket=").append(URLEncoder.encode(ticketJson.getString("ticket"),"utf-8"));
            String url =sb.toString();
            httpUtil.getImage(response,url);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

首先是拼接url,然后发送请求,这里设置响应的格式,同时用 字节流进行输出

public void getImage(HttpServletResponse response,String url){
        try {
            URL u = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) u.openConnection();
            conn.setRequestMethod("GET");
            InputStream inputStream = conn.getInputStream();
            byte[] bytes = readInputStream(inputStream);
            inputStream.close();
            response.setContentType("image/jpg");
            OutputStream outputStream = response.getOutputStream();
            outputStream.write(bytes);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private byte[] readInputStream(InputStream inputStream) throws IOException {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = inputStream.read(buffer)) != -1){
            outputStream.write(buffer,0,len);
        }
        inputStream.close();
        return outputStream.toByteArray();
    }

然后调用结果就是这样的。好了大家一起愉快的买票上车吧

经验分享 程序员 微信小程序 职场和发展