java 生成小程序二维码

根据小程序的appId和秘钥换取授权accessToken 信息:
String codeUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="//生成二维码url
String url = "https://api.weixin.qq.com/cgi-bin/token?appid="+appId+"&secret="+appSecret+"&grant_type=client_credential"
RestTemplate restTemplate = new RestTemplate()
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class)
logger.info("responseEntity授权获取accessToken:"+responseEntity)
 if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {

        String sessionData = responseEntity.getBody()
        logger.info("sessionData = " + sessionData)
        JSONObject jsonObj = JSON.parseObject(sessionData)
        String accessToken = jsonObj.getString("access_token")

        URL url_Code= new URL(codeUrl+accessToken)
        HttpURLConnection httpURLConnection = (HttpURLConnection) url_Code.openConnection()
        httpURLConnection.setRequestMethod("POST")//提交模式
        // 发送POST请求必须设置如下两行
        httpURLConnection.setDoOutput(true)
        httpURLConnection.setDoInput(true)
        // 获取URLConnection对象对应的输出流
        PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream())
        // 发送请求参数
        JSONObject paramJson = new JSONObject()
        paramJson.put("scene",orderCodeReq.scene)
        paramJson.put("page", orderCodeReq.page)
        paramJson.put("width", orderCodeReq.width)//二维码的宽度,默认为 430px,最小 280px,最大 1280px
        paramJson.put("auto_color", orderCodeReq.autoColor)
        Map<String,Object> line_color = new HashMap<>()
        line_color.put("r", 0)
        line_color.put("g", 0)
        line_color.put("b", 0)
        paramJson.put("line_color", line_color)
        printWriter.write(paramJson.toString())
        // flush输出流的缓冲
        printWriter.flush()
        //开始获取数据
        String uploadBasePath = 上传文件的路径//
        String accessPath= 访问路径//
        String imei = RandomUtil.getCharAndNum(10) //随机生成文件的名称
        String name = imei+".png"
        String towPath=  上传文件的路径     

        if(uploadBasePath.charAt(uploadBasePath.length()-1) != '/') uploadBasePath=uploadBasePath+"/"
          String basePath=uploadBasePath+towPath
          File fileDir=new File(basePath)
          if(!fileDir.isDirectory()) fileDir.mkdirs()
          fileName = accessPath+"/"+towPath+"/"+name

          BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream())
          OutputStream os = new FileOutputStream(new File(basePath+"/"+name))
          int len
          byte[] arr = new byte[1024]
          while ((len = bis.read(arr)) != -1)
           {
               os.write(arr, 0, len)
               os.flush()
           }
          os.close()
        
  }
返回前端的是一个可以在浏览器上面访问的地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值