Java--天生小程序码 getQRCode

打印 上一主题 下一主题

主题 981|帖子 981|积分 2943

官方文档:获取小程序码

可应用于天生属于自己小程序的二维码、用户天生属于自己的邀请码、海报所需的二维码等
官方文档有三种天生小程序码的方法,我们可以根据自身必要选择对应的方法
三种方法的区别:


  • getQRCode():适用于带有固定路径的小程序码(好比你的小程序的码),每个账号每天最多可以天生100张小程序
  • getUnlimitedQRCode():适用于必要大量天生带有参数的小程序码的场景,每个账号最多可以天生10w张带有参数的小程序码
  • createQRCode():适用于天生带有固定路径的小程序,每个账号每天最多可以天生100张小程序码
根据自己所需 选择对应的方法 我使用的是getQRCode天生我小程序的码
代码演示:
参数

  1. @Data
  2. public class QrCodeDto implements Serializable {
  3.     private String scene;
  4.     private String page;
  5.     private String env_version;
  6. }
复制代码
service层

  1.     private String scene = "a=1"; //自定义的 设置默认值
  2.     private String page = "pages/index/index"; //默认是主页 详看官方文档
  3.     private int width = 200;
  4.     private String baseFilePath = "D:/qrcode/";
  5.     private String env_version = "develop";
  6.   public byte[] getQRCode(QrCodeDto qrCodeDto) {
  7.         try {
  8.             String page = qrCodeDto.getPage();
  9.             String scene = qrCodeDto.getScene();
  10.             String env_version = qrCodeDto.getEnv_version();
  11.             AjaxResult accessToken1 = getAccessToken();
  12.             String accessToken = (String) accessToken1.get("access_token");
  13.             URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken);
  14.             HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
  15.             httpURLConnection.setRequestMethod("POST");
  16.             httpURLConnection.setDoOutput(true);
  17.             httpURLConnection.setDoInput(true);
  18.             JSONObject paramJson = new JSONObject();
  19.             paramJson.put("scene", scene != null && !scene.isEmpty() ? scene : this.scene);
  20.             paramJson.put("page", page != null && !page.isEmpty() ? page : this.page);
  21.             paramJson.put("env_version", env_version != null && !env_version.isEmpty() ? env_version : this.env_version);
  22.             paramJson.put("width", width);
  23.             paramJson.put("is_hyaline", true);
  24.             paramJson.put("check_path", false);
  25.             try (PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream())) {
  26.                 printWriter.write(paramJson.toString());
  27.                 printWriter.flush();
  28.             }
  29.             try (InputStream inputStream = httpURLConnection.getInputStream()) {
  30.                 return bytes;
  31.             } finally {
  32.                 httpURLConnection.disconnect();
  33.             }
  34.         } catch (Exception e) {
  35.             e.printStackTrace();
  36.             return null;
  37.         }
  38.     }
  39. //获取AccessToken 这里参数不理解的 可以看我主页 小程序的支付接口 所需的appId等
  40. //或可以看官方文档
  41.     public AjaxResult getAccessToken() {
  42.         String accToken = redisTemplate.opsForValue().get("accessToken");
  43.         if (StringUtils.isBlank(accToken)) {
  44.             String url = "https://api.weixin.qq.com/cgi-bin/token?appid={0}&secret={1}&grant_type=client_credential";
  45.             String replaceUrl = url.replace("{0}", appId).replace("{1}", appSecret);
  46.             JSONObject jsonObject = JSONObject.parseObject(HttpUtils.sendGet(replaceUrl));
  47.             Integer errcode = jsonObject.getInteger("errcode");
  48.             if (ObjectUtils.isEmpty(errcode)) {
  49.                 String accessToken = jsonObject.getString("access_token");
  50.                 redisTemplate.opsForValue().set("accessToken", accessToken, 7000, TimeUnit.SECONDS);
  51.                 AjaxResult ajax = AjaxResult.success();
  52.                 ajax.put("access_token", accessToken);
  53.                 return ajax;
  54.             } else {
  55.                 return AjaxResult.error("微信错误" + jsonObject.getString("errmsg"));
  56.             }
  57.         } else {
  58.             AjaxResult ajax = AjaxResult.success();
  59.             ajax.put("access_token", accToken);
  60.             return ajax;
  61.         }
  62.     }
复制代码
controller层

  1.     @ApiOperation("获取小程序二维码")
  2.     @PostMapping("/getQRCode")
  3.     public AjaxResult getQRCode(@RequestBody QrCodeDto qrCodeDto) {
  4.         AjaxResult ajax = AjaxResult.success();
  5.         byte[] qrCode = wechatLoginService.getQRCode(qrCodeDto);
  6.         ajax.put("qrCode", qrCode);
  7.         wechatLoginService.getQRCode(qrCodeDto);
  8.         return ajax;
  9.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表