Java实现微信小程序生成小程序二维码,并携带参数。

您所在的位置:网站首页 java微信小程序 Java实现微信小程序生成小程序二维码,并携带参数。

Java实现微信小程序生成小程序二维码,并携带参数。

2024-06-12 08:59| 来源: 网络整理| 查看: 265

业务需求:生成小程序的二维码,并携带指定参数;

生成小程序二维码官方链接

官方提供两个接口,我选择了 wxacode.getUnlimited,生成数量不受限制 ;

 1.首先需要获取微信的access_token /** * 获取微信accesstoken * * @param wxappid * @param wxappkey * @return */ public static String getWxAcesstoken(String wxappid, String wxappkey) throws CustomizeException { String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxappid + "&secret=" + wxappkey; try { String jsonstr = HttpUtil.get(tokenUrl); JSONObject jsonObject = JSON.parseObject(jsonstr); if (jsonObject.containsKey("access_token")) { String accesstoken = jsonObject.getString("access_token"); return accesstoken; } else { log.error("未获取到token"); throw new CustomizeException("未获取到token"); } } catch (Exception e) { log.error("未获取到token"); throw new CustomizeException(e.getMessage()); } } 2.重写了一个发送http请求的方法

返回的格式是ByteArrayInputStream,它是一个访问数组的字节输入流

public static ByteArrayInputStream sendPost(String URL, String json) { InputStream inputStream = null; ByteArrayInputStream byteArrayInputStream = null; // 创建默认的httpClient实例. CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httppost HttpPost httppost = new HttpPost(URL); httppost.addHeader("Content-type", "application/json; charset=utf-8"); httppost.setHeader("Accept", "application/json"); try { StringEntity s = new StringEntity(json, Charset.forName("UTF-8")); s.setContentEncoding("UTF-8"); httppost.setEntity(s); HttpResponse response = httpclient.execute(httppost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // 获取相应实体 HttpEntity entity = response.getEntity(); inputStream = entity.getContent(); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); // 创建一个Buffer字符串 byte[] buffer = new byte[1024]; // 每次读取的字符串长度,如果为-1,代表全部读取完毕 int len = 0; // 使用一个输入流从buffer里把数据读取出来 while ((len = inputStream.read(buffer)) != -1) { // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 outStream.write(buffer, 0, len); } // 关闭输入流 inputStream.close(); // 把outStream里的数据写入内存 byteArrayInputStream = new ByteArrayInputStream(outStream.toByteArray()); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭连接,释放资源 try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return byteArrayInputStream; }  3.第三步就是生成小程序二维码的逻辑 /** * 获取小程序菊花码 *parm:machineNo 二维码想携带的参数 **/ public String getWXCode(String machineNo) throws CustomizeException { private String appId ="asdasdasd"; //自己小程序的appid private String secret ="454654645564"; //自己小程序的密钥 String aiyunUrl = ""; try { //这里调用的是上面的获取access_token方法 String access_token = getWxAcesstoken(appId, secret); String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token; String scene = machineNo; /携带参数放在scene 内 Map param = new HashMap(); param.put("scene", scene); //这里的page如果没有的话可以不写,默认是跳主页,如果写了没有的页面的话,会返回错误信息 // param.put("page", "pages/index/index"); String json = JSON.toJSONString(param); ByteArrayInputStream inputStream = sendPost(url, json); //这里判断的是返回的图片还是错误信息,一般错误信息不会大于200 if (inputStream.available()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3