Java--生成小程序码 getQRCode_java生成小程序二维码 带参数
官方文档:获取小程序码
(可应用于生成属于自己小程序的二维码、用户生成属于自己的邀请码、海报所需的二维码等)
官方文档有三种生成小程序码的方法,我们可以根据自身需要选择对应的方法
三种方法的区别:
- getQRCode():适用于带有固定路径的小程序码(比如你的小程序的码),每个账号每天最多可以生成100张小程序
- getUnlimitedQRCode():适用于需要大量生成带有参数的小程序码的场景,每个账号最多可以生成10w张带有参数的小程序码
- createQRCode():适用于生成带有固定路径的小程序,每个账号每天最多可以生成100张小程序码
根据自己所需 选择对应的方法 我使用的是getQRCode生成我小程序的码
代码演示:
参数
@Datapublic class QrCodeDto implements Serializable { private String scene; private String page; private String env_version;}
service层
private String scene = \"a=1\"; //自定义的 设置默认值 private String page = \"pages/index/index\"; //默认是主页 详看官方文档 private int width = 200; private String baseFilePath = \"D:/qrcode/\"; private String env_version = \"develop\"; public byte[] getQRCode(QrCodeDto qrCodeDto) { try { String page = qrCodeDto.getPage(); String scene = qrCodeDto.getScene(); String env_version = qrCodeDto.getEnv_version(); AjaxResult accessToken1 = getAccessToken(); String accessToken = (String) accessToken1.get(\"access_token\"); URL url = new URL(\"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=\" + accessToken); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod(\"POST\"); httpURLConnection.setDoOutput(true); httpURLConnection.setDoInput(true); JSONObject paramJson = new JSONObject(); paramJson.put(\"scene\", scene != null && !scene.isEmpty() ? scene : this.scene); paramJson.put(\"page\", page != null && !page.isEmpty() ? page : this.page); paramJson.put(\"env_version\", env_version != null && !env_version.isEmpty() ? env_version : this.env_version); paramJson.put(\"width\", width); paramJson.put(\"is_hyaline\", true); paramJson.put(\"check_path\", false); try (PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream())) { printWriter.write(paramJson.toString()); printWriter.flush(); } try (InputStream inputStream = httpURLConnection.getInputStream()) { return bytes; } finally { httpURLConnection.disconnect(); } } catch (Exception e) { e.printStackTrace(); return null; } }//获取AccessToken 这里参数不理解的 可以看我主页 小程序的支付接口 所需的appId等 //或可以看官方文档 public AjaxResult getAccessToken() { String accToken = redisTemplate.opsForValue().get(\"accessToken\"); if (StringUtils.isBlank(accToken)) { String url = \"https://api.weixin.qq.com/cgi-bin/token?appid={0}&secret={1}&grant_type=client_credential\"; String replaceUrl = url.replace(\"{0}\", appId).replace(\"{1}\", appSecret); JSONObject jsonObject = JSONObject.parseObject(HttpUtils.sendGet(replaceUrl)); Integer errcode = jsonObject.getInteger(\"errcode\"); if (ObjectUtils.isEmpty(errcode)) { String accessToken = jsonObject.getString(\"access_token\"); redisTemplate.opsForValue().set(\"accessToken\", accessToken, 7000, TimeUnit.SECONDS); AjaxResult ajax = AjaxResult.success(); ajax.put(\"access_token\", accessToken); return ajax; } else { return AjaxResult.error(\"微信错误\" + jsonObject.getString(\"errmsg\")); } } else { AjaxResult ajax = AjaxResult.success(); ajax.put(\"access_token\", accToken); return ajax; } }
controller层
@ApiOperation(\"获取小程序二维码\") @PostMapping(\"/getQRCode\") public AjaxResult getQRCode(@RequestBody QrCodeDto qrCodeDto) { AjaxResult ajax = AjaxResult.success(); byte[] qrCode = wechatLoginService.getQRCode(qrCodeDto); ajax.put(\"qrCode\", qrCode); wechatLoginService.getQRCode(qrCodeDto); return ajax; }