小程序指定页面二维码生成

小程序生成指定页面二维码

小程序生成海报分享传播,需要生成分享页面的二维码,用户扫描这个二维码即可进入分享的这个小程序页面,对于分享者更具有指向性;

Java后台代码

二维码获取详细接口信息可参照官方文档
接口调用凭证(access_token)可参考官方文档

	/**
     * pagesPath 小程序分享页面路径及页面数据请求参数
     * pagesPath :"pages/index/showGroup/showGroup?tId=tId",
     */
	public String getInfoGroupOfQRCode(String pagesPath) {
        // 生成二维码下载到服务器的路径
        String QRCodePath = "";
        // 接口调用凭证(access_token)
        String tToken = "XXX";
        try {
            JSONObject json = new JSONObject();
            String requstPath = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN";
            String url = requstPath.replace("ACCESS_TOKEN", tToken.gettAccessToken());
            json.accumulate("path", pagesPath);
            json.accumulate("width", "180");
            // 请求微信,获取回执数据
            HttpResponse response = doPostOfQRCode(url, json.toString());
            if (response != null) {
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
                    InputStream instreams = resEntity.getContent();
                    QRCodePath = saveToImgByInputStream(instreams);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return QRCodePath;
    }

请求微信

post请求微信获取二维码回执信息

	public static HttpResponse doPostOfQRCode(String url, String outStr) throws IOException {
        DefaultHttpClient client = new DefaultHttpClient();//获取DefaultHttpClient请求
        HttpPost httpost = new HttpPost(url);//HttpPost将使用Get方式发送请求URL
        JSONObject jsonObject = null;
        httpost.setEntity(new StringEntity(outStr, "UTF-8"));//使用setEntity方法,将我们传进来的参数放入请求中
        HttpResponse response = client.execute(httpost);//使用HttpResponse接收client执行httpost的结果
        return response;
    }

微信回执生成图片二维码

根据微信回执的信息生成二维码并保存到服务器

	public static String saveToImgByInputStream(InputStream instreams) {
        JSONObject result = new JSONObject();
        String filePath = "C:\\uploadfiles";// 文件保存目录
        String fileName = UUIDUtil.getUUID() + ".jpg";
        if (instreams != null) {
            try {
                File file = new File(filePath, fileName);//可以是任何图片格式.jpg,.png等
                FileOutputStream fos = new FileOutputStream(file);
                byte[] b = new byte[1024];
                int nRead = 0;
                while ((nRead = instreams.read(b)) != -1) {
                    fos.write(b, 0, nRead);
                }
                fos.flush();
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            }
        }
        result.put("qRCodeFilePath", "https://xxx/file/download?fileName="+fileName);
        return result.toJSONString();
    }

postman测试

在这里插入图片描述

发布了35 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43948057/article/details/96857012