国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java集成微信小程序生成二維碼傳回前端,提供下載按鈕

這篇具有很好參考價值的文章主要介紹了Java集成微信小程序生成二維碼傳回前端,提供下載按鈕。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、后端調(diào)用方法獲取AccessToken的工具類


import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.web.client.RestTemplate;

import java.util.Map;

public class qrUtils {
//    private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appId}&secret={secret}";;
    private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='輸入自己的小程序ID'&secret='輸入自己的小程序密鑰'";;

    /**
     * 獲取微信的appId的工具類,字符串之后需要JSON.parseObject轉(zhuǎn)化。
     *
     * @param
     * @param
     * @return 獲取結(jié)果
     */
    public static String getAccessToken() {
        String accesstoken=new String();
        String requestUrl = ACCESS_TOKEN_URL;
//        //傳入?yún)?shù)替換
//        requestUrl = requestUrl.replaceAll("appId", appId);
//        requestUrl = requestUrl.replaceAll("secret", secret);
        //超時,需要重新請求接口
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(requestUrl, String.class);
        JSONObject jsonObject = JSON.parseObject(result.toString());
        accesstoken = jsonObject.getString("access_token");
        return result;
    }

}

2、獲取完AccessToken后調(diào)用微信小程序接口,寫一個微信小程序工具類


import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.core.controller.BaseController;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import com.ruoyi.*;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;



public class WeChatUtil  {
// 這是獲取不受限制的小程序碼,官網(wǎng)還有其他兩種
    private static final String WX_CODE_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=AccessToken";

//    public static WxCodeUnlimitedResponseParam getUnlimitedCode(String accessToken, String scene, String page) {
    public static WxCodeUnlimitedResponseParam getUnlimitedCode(String accessToken) {
        JSONObject jsonObject = JSON.parseObject(accessToken.toString());
        String accesstoken1 = jsonObject.getString("access_token");
        // url請求參數(shù)值
        Map<String, Object> params = new HashMap<String, Object>();
        //**注意:接口文檔錯誤需要將access_token參數(shù)放到url中,否則請求會失敗
        //scene為你需要傳入得參數(shù)類似“id=????&code=222”,為參數(shù)名和值組成得字符串。
        // 這些參數(shù)微信小程序上官網(wǎng)上有,根據(jù)需求添加
        params.put("scene", "type=1");
        params.put("page", "page/index/index");
        params.put("width", 200);
        params.put("auto_color", true);
        params.put("check_path",false);
        params.put("line_color", null);
        params.put("is_hyaline", false);

        byte[] byteArray = null;
        /** 第一種方式:使用RestTemplate。項目采用了這種方式。 **/
        // 調(diào)用微信接口
        WxCodeUnlimitedResponseParam res = new WxCodeUnlimitedResponseParam();
        try {
            RestTemplate restTemplate = new RestTemplate();
            String request =WX_CODE_URL.replaceAll("AccessToken",accesstoken1);
            ResponseEntity<byte[]> entity = restTemplate.postForEntity(
                    request,
                    JSONObject.toJSONString(params), byte[].class);
            // 如果你十分確認(rèn)微信正確返回了圖片,那么byteArray已經(jīng)是你想要的結(jié)果了。
            byteArray = entity.getBody();
            // 微信返回內(nèi)容,byte[]轉(zhuǎn)為string
            String wxReturnStr = new String(byteArray);
            if (wxReturnStr.indexOf("errCode") != -1) {
                JSONObject json = JSONObject.parseObject(wxReturnStr);
                res.setErrCode(json.get("errCode").toString());
                res.setErrMsg(json.get("errMsg").toString());
            } else {
                res.setErrCode("0");
                res.setErrMsg("ok");
                res.setBuffer(byteArray);
            }
        } catch (Exception e) {
            System.out.println("右岸頂針");
            System.out.println("微信小程序碼getUnlimited接口調(diào)用失敗");
        }
        System.out.println(res);
        return  res;
    }
}

3、后端controller類,編寫一個接口來調(diào)用以上工具類生成二維碼并轉(zhuǎn)換成base64的方式傳回前端

/**
     * 生辰二維碼
     */
    @GetMapping("/getInviteCode")
    @ResponseBody
    public String getInviteCode(HttpServletResponse response) throws IOException {

        String accessToken=qrUtils.getAccessToken();

        WxCodeUnlimitedResponseParam res= WeChatUtil.getUnlimitedCode(accessToken);
//        //以流的方式返回給前端
        InputStream inputStream = new ByteArrayInputStream(res.getBuffer());
        BufferedImage bufferedImage = ImageIO.read(inputStream);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        if (bufferedImage != null){
            String format = "jpeg";
            System.out.println(bufferedImage);
            ImageIO.write(bufferedImage, format, baos);
            byte[] imageBytes = baos.toByteArray();
            baos.close();
            return Base64.getEncoder().encodeToString(imageBytes);
        }
        return null;
    }

4、前端用的是vue2+elementUI

<!-- 查看二維碼對話框 -->
    <el-dialog :title="title" :visible.sync="open_qr_code" width="700px" append-to-body v-dialogDrag custom-class="center-dialog">
      <el-card shadow="always">
          <el-image :src="QRcodeSrc"></el-image>
      </el-card>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="handleDownloadQrIMg(QRcodeSrc)">點擊下載</el-button>
        <el-button type="primary" @click="cancel_detail">關(guān) 閉</el-button>
      </div>
    </el-dialog>
 /**
     * 生成二維碼
     * */
    createQRCode() {
      this.loading = true;
      createQRcode().then(response => {
        this.QRcodeSrc = "data:image/png;base64," + response;
        this.open_qr_code = true;
        this.loading = false;
      })
    },

    /**
     * 下載圖片
     * @returns {string}
     */
    //imageBase64是后臺傳回來的base64數(shù)據(jù)
    handleDownloadQrIMg(imageBase64) {
      // 這里是獲取到的圖片base64編碼,這里只是個例子哈,要自行編碼圖片替換這里才能測試看到效果
      const imgUrl = `${imageBase64}`;
      // 如果瀏覽器支持msSaveOrOpenBlob方法(也就是使用IE瀏覽器的時候),那么調(diào)用該方法去下載圖片
      if (window.navigator.msSaveOrOpenBlob) {
        const bstr = atob(imgUrl.split(',')[1]);
        let n = bstr.length;
        const u8arr = new Uint8Array(n);
        while (n--) {
          u8arr[n] = bstr.charCodeAt(n);
        }
        const blob = new Blob([u8arr]);
        window.navigator.msSaveOrOpenBlob(blob, '簽到碼.jpg');
      } else {
        // 這里就按照chrome等新版瀏覽器來處理
        const a = document.createElement('a');
        a.href = imgUrl;
        a.setAttribute('download', 'filename.jpg');
        a.click();
      }
    }

然后就大功告成了?。。。。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-842937.html

到了這里,關(guān)于Java集成微信小程序生成二維碼傳回前端,提供下載按鈕的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 微信小程序之生成二維碼

    微信小程序之生成二維碼

    ?var context = wx.createCanvasContext(\\\'mycanvas\\\');?// 獲取畫布 CanvasContext.fillText string text 在畫布上輸出的文本 number x 繪制文本的左上角 x 坐標(biāo)位置 number y 繪制文本的左上角 y 坐標(biāo)位置 number maxWidth 需要繪制的最大寬度,可選 CanvasContext.drawImage string imageResource 所要繪制的圖片資源(網(wǎng)絡(luò)

    2024年02月10日
    瀏覽(28)
  • 微信小程序 — 生成二維碼功能

    微信小程序 — 生成二維碼功能

    微信小程序?qū)崿F(xiàn)生成二維碼功能。需要用到canvas組件,設(shè)置 type為2d.? 需要使用js包 weapp-qrcode-canvas-2d https://github.com/DoctorWei/weapp-qrcode-canvas-2d weapp-qrcode-canvas-2d 是使用新版canvas-2d接口在微信小程序中生成二維碼(外部二維碼)的js包。canvas 2d 接口支持同層渲染且性能更佳,可大

    2024年02月09日
    瀏覽(26)
  • 微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼

    微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼

    業(yè)務(wù)需求 :點擊預(yù)約按鈕即可生成二維碼憑碼入校參觀~ 如下是博主自己寫的wxml: 以及wxss: 去Gitee下載工具包: 二維碼工具包 http://? https://gitee.com/WeiDoctor/weapp-qrcode-canvas-2d ? 下載zip: ? ? 將dist文件夾中的js文件全部復(fù)制到utils目錄下: 如下代碼必須完整的導(dǎo)入再頁面

    2024年04月15日
    瀏覽(34)
  • 微信小程序使用--如何生成二維碼

    微信小程序使用--如何生成二維碼

    一、生成二維碼 1.獲取token 參照官方文檔說明: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html 其中g(shù)rant_type是寫死的,appid和secret是注冊小程序的時候獲取的,然后會得到一個默認(rèn)兩小時失效的token 2.獲取二維碼 參照官方文檔說明: https://developers.

    2024年02月04日
    瀏覽(23)
  • 微信小程序生成二維碼的 方式

    一:生成普通的二維碼 https://open.weixin.qq.com/sns/getexpappinfo?appid=xxxpath=xxx?a=123 appid:小程序的appid path: 小程序的路徑 a:小程序需要攜帶的參數(shù),不傳可以不寫 二:在微信開發(fā)文檔內(nèi)生成 步驟1.登錄微信公眾平臺 2.找到工具菜單 3.選擇生成小程序碼 具體里面的有生成規(guī)則,不懂得

    2024年02月12日
    瀏覽(24)
  • 【小程序】動態(tài)生成微信小程序二維碼

    官方文檔中給我們提供了三個接口,分別應(yīng)用于不同的場景 wxacode.createQRCode - - 接口文檔地址-點擊跳轉(zhuǎn) 該接口需慎用,因為文檔描述,該接口可生成的二維碼是有限制的。 總共生成的碼數(shù)量限制為 100,000 wxacode.get - - 接口文檔地址-點擊跳轉(zhuǎn) 該接口需慎用,因為文檔描述,該

    2024年02月09日
    瀏覽(27)
  • 微信小程序生成二維碼海報并分享

    背景:點擊圖標(biāo),生成海報后,點擊保存相冊,可以保存 生成海報:插件wxa-plugin-canvas,此處使用頁面異步生成組件方式,官網(wǎng)地址:wxa-plugin-canvas - npm 二維碼:調(diào)用后端接口生成二維碼 需要調(diào)用獲取圖片信息接口wx.getImageInfo(),獲取到圖片的寬高以做整體寬高配置 closePos

    2024年03月21日
    瀏覽(96)
  • 微信小程序生成攜帶參數(shù)的二維碼

    微信小程序生成攜帶參數(shù)的二維碼

    當(dāng)對需求的時候發(fā)現(xiàn) 要完成一個永久二維碼直接進(jìn)入微信小程序的對應(yīng)頁面+對應(yīng)IID參數(shù) 不要慌 這篇文章解決 滿足生成需要 微信官方提供生成微信二維碼 可滿足大部分功能 獲取不限制的小程序碼 | 微信開放文檔 可以看到官方文檔有3種二維碼的樣式 我們這里以第一種的小

    2024年02月09日
    瀏覽(91)
  • 微信小程序任意指定頁面生成二維碼

    微信小程序任意指定頁面生成二維碼

    在日常微信小程序運營中,文章,和朋友圈海報內(nèi)總會用到微信小程序特定頁面二維碼 ps:一定要輸入當(dāng)前小程序小程序項目成員的微信號

    2024年02月11日
    瀏覽(26)
  • 生成普通的微信小程序二維碼

    生成普通的微信小程序二維碼

    1.登錄微信小程序后臺傳送門 開發(fā)管理-開發(fā)設(shè)置-掃普通鏈接二維碼打開小程序? ?在這里開通此功能,然后按微信定義的規(guī)則配置具體的地址,等正式上線的時候再發(fā)布該規(guī)則 ?2.然后按照配置的 二維碼規(guī)則 (上圖第三項) 去直接生成普通的二維碼(可自行攜帶參數(shù)),然后微信掃一

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包