作用(為什么要獲取公眾號的二維碼):為了滿足用戶渠道推廣分析和用戶賬號綁定等場景的需要 。 一.目前有2種類型的二維碼:1.創(chuàng)建二維碼官網(wǎng)文檔說明每次創(chuàng)建二維碼ticket需要提供一個開發(fā)者自行設(shè)定的參數(shù)(scene_id),分別介紹臨時二維碼和永久二維碼的創(chuàng)建二維碼ticket過程。 1.1 臨時二維碼請求說明http請求方式: POST URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN POST數(shù)據(jù)格式:json POST數(shù)據(jù)例子: {"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}} 或者也可以使用以下POST數(shù)據(jù)創(chuàng)建字符串形式的二維碼參數(shù): {"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}} 1.2 永久二維碼請求說明http請求方式: POST URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN POST數(shù)據(jù)格式:json POST數(shù)據(jù)例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}} 或者也可以使用以下POST數(shù)據(jù)創(chuàng)建字符串形式的二維碼參數(shù): {"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}} 1.3 參數(shù)說明參數(shù) | 說明 |
---|
expire_seconds | 該二維碼有效時間,以秒為單位。 最大不超過2592000(即30天),此字段如果不填,則默認(rèn)有效期為30秒。 | action_name | 二維碼類型,QR_SCENE為臨時的整型參數(shù)值,QR_STR_SCENE為臨時的字符串參數(shù)值,QR_LIMIT_SCENE為永久的整型參數(shù)值,QR_LIMIT_STR_SCENE為永久的字符串參數(shù)值 | action_info | 二維碼詳細(xì)信息 | scene_id | 場景值ID,臨時二維碼時為32位非0整型,永久二維碼時最大值為100000(目前參數(shù)只支持1--100000) | scene_str | 場景值ID(字符串形式的ID),字符串類型,長度限制為1到64 |
1.4 返回說明正確的Json返回結(jié)果: { "ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==", "expire_seconds":60, "url":"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI" } 參數(shù) | 說明 |
---|
ticket | 獲取的二維碼ticket,憑借此ticket可以在有效時間內(nèi)換取二維碼。 | expire_seconds | 該二維碼有效時間,以秒為單位。 最大不超過2592000(即30天)。 | url | 二維碼圖片解析后的地址,開發(fā)者可根據(jù)該地址自行生成需要的二維碼圖片 |
2.代碼實現(xiàn)以上部分通過官方文檔理解,獲取二維碼的過程分為兩步 2.1 獲取創(chuàng)建二維碼ticket /** * 獲取帶參數(shù)二維碼的ticket * @return */ public static String GetTicket(String appId,String appSecret) { //1.獲取token String token=WXUtilsCenter.getAccessToken(appId,appSecret); String url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" token; //2.生成臨時字符串二維碼:有效期10分鐘,二維碼類型為字符串參數(shù)值 String data="{\"expire_seconds\": 600, \"action_name\": \"QR_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"kds\"}}}"; String result=HttpUtil.post(url, data); String ticket=JSONObject.fromObject(result).getString("ticket"); return ticket; } 2.2 通過ticket換取二維碼 獲取二維碼ticket后,開發(fā)者可用ticket換取二維碼圖片。請注意,本接口無須登錄態(tài)即可調(diào)用。 請求說明 HTTP GET請求(請使用https協(xié)議) https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET 提醒:TICKET記得進行UrlEncode /** * 獲取當(dāng)前公眾號的二維碼 * @param response */ @RequestMapping("/getQrCode") public void getQrCode(HttpServletResponse response) { //1.拿到ticket String ticket=utils.GetTicket(appId, appSecret); //2.用ticket換取二維碼 String imgUrl="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" ticket; try { URL url = new URL(imgUrl); HttpURLConnection httpUrl=(HttpURLConnection)url.openConnection(); httpUrl.connect(); httpUrl.getInputStream(); InputStream is=httpUrl.getInputStream(); BufferedImage image = ImageIO.read(is); // 可通過輸出流輸出到頁面 ImageIO.write(image, "png", response.getOutputStream()); } catch (Exception e) { e.printStackTrace(); } } 2.2 通過接口地址打開二維碼: http://ksweixin.free./weichat/wx/getQrCode 至此,二維碼的獲取工作就完成。 來源:https://www./content-4-670601.html
|