微信小程序--java接口開發獲取小程序碼和(hé)二維碼
發表時間:2021-5-11
發布人:葵宇科技
浏覽次數:38
前言:目前小程序推出了自己的識别碼,小程序碼,這個(gè)圓形的碼看起來比二維碼好看。本文(wén)總結微信小程序的獲取小程序碼和(hé)二維碼并生成二維碼圖片的接口開發。主要内容摘抄自微信小程序的API文(wén)檔,Java接口開發是自己總結開發。
微信小程序API文(wén)檔:獲取二維碼
一、簡介
通(tōng)過後台接口可(kě)以獲取小程序任意頁面的二維碼,掃描該二維碼可(kě)以直接進入小程序對應的頁面。目前微信支持兩種二維碼,小程序碼(左),小程序二維碼(右),如(rú)下(xià)所示:
二、獲取小程序碼
目前有兩個(gè)接口可(kě)以生成小程序碼,開發者可(kě)以根據自己的需要選擇合适的接口。
1 不帶參數有限個(gè)數小程序碼接口
适用于需要的碼數量較少(shǎo)的業(yè)務場景
接口地址:
https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
注:獲取accesstoken的方法跟微信公衆獲取accesstoken方法一緻,不過小程序獲取accesstoken需要小程序的appid和(hé)appsercet。登錄https://mp.weixin.qq.com ,就可(kě)以在網站(zhàn)的“設置”-“開發者設置”中(zhōng),查看到微信小程序的 AppID 了,注意不可(kě)直接使用服務号或訂閱号的 AppID 。
獲取微信小程序的 AppID文(wén)章地址:小程序簡易教程
(1)POST 參數說明
參數 | 類型 | 默認值 | 說明 |
---|
path | String | | 不能為空,最大長度 128 字節 |
width | Int | 430 | 二維碼的寬度 |
auto_color | Bool | false | 自動(dòng)配置線條顔色,如(rú)果顔色依然是黑色,則說明不建議配置主色調 |
line_color | Object | {“r”:”0”,”g”:”0”,”b”:”0”} | auth_color 為 false 時生效,使用 rgb 設置顔色 例如(rú) {“r”:”xxx”,”g”:”xxx”,”b”:”xxx”} |
注意:通(tōng)過該接口生成的小程序碼,永久有效,但數量有效,請謹慎使用。用戶掃描該碼進入小程序後,将直接進入 path 對應的頁面。
(2)請求接口測試
使用http請求插件postman或者RESTClient請求測試。
請求測試結果返回一個(gè)小程序碼圖片,與微信公衆平台生成二維碼不同,小程序碼直接返回文(wén)件流,不是微信公衆平台的url和(hé)ticket。
(3)java接口開發
注:此接口是基于spring RestTemplate進行http請求,進行http請求有很多方法和(hé)工具類,可(kě)自行百度或參考下(xià)面的參考文(wén)章。接口隻是提供一個(gè)解決方法的思路(lù)。
public Map getminiqrQr(String accessToken) {
RestTemplate rest = new RestTemplate();
InputStream inputStream = null;
OutputStream outputStream = null;
try {
String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token="+accessToken;
Map<String,Object> param = new HashMap<>();
param.put("page", "pages/index/index");
param.put("width", 430);
param.put("auto_color", false);
Map<String,Object> line_color = new HashMap<>();
line_color.put("r", 0);
line_color.put("g", 0);
line_color.put("b", 0);
param.put("line_color", line_color);
LOG.info("調用生成微信URL接口傳參:" + param);
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
HttpEntity requestEntity = new HttpEntity(param, headers);
ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
LOG.info("調用小程序生成微信永久小程序碼URL接口返回結果:" + entity.getBody());
byte[] result = entity.getBody();
LOG.info(Base64.encodeBase64String(result));
inputStream = new ByteArrayInputStream(result);
File file = new File("C:/Users/wangqiulin/Desktop/1.png");
if (!file.exists()){
file.createNewFile();
}
outputStream = new FileOutputStream(file);
int len = 0;
byte[] buf = new byte[1024];
while ((len = inputStream.read(buf, 0, 1024)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.flush();
} catch (Exception e) {
LOG.error("調用小程序生成微信永久小程序碼URL接口異常",e);
} finally {
if(inputStream !=