微信小程式生成二維碼介面呼叫
阿新 • • 發佈:2018-12-28
小程式生成二維碼這個介面可以在小程式裡面做, 也可以在java後臺做, 此篇部落格記錄的是在java後臺請求微信的介面生成;
場景:
如果要生成帶引數二維碼拿出去做裂變推廣, 生成的二維碼數量多. 此時不可能一個個通過草料或者阿拉丁來做, 只能請求官方的介面生成;
準備工作:
a. 小程式的appId
b.小程式的secret
步驟如下:
1. 獲取小程式的access_token, 該值是生成二維碼的必要因素, 獲取方式如下:
/** * 獲取access_token * * @return */ public String getAccessToken() { Map<String, String> map = new LinkedHashMap<>(); map.put("grant_type", "client_credential"); map.put("appid", APP_ID);//改成自己的appid map.put("secret", SECRET); String res = sendPost(tokenUrl, map); JSONObject parse = JSONObject.parseObject(res); if (parse.getString("access_token") != null || parse.getString("access_token") != "") { return parse.getString("access_token"); } else { return null; } }
2. 通過access_token獲取小程式的二維碼:
public InputStream getminiqrQr(String accessToken, String userId) { InputStream in = null; try { URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("POST"); httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream()); // 傳送請求引數 JSONObject paramJson = new JSONObject(); paramJson.put("scene", "useId="+userId); paramJson.put("path", "pages/invite/invite"); paramJson.put("width", 430); paramJson.put("is_hyaline", false); // 生成二維碼顏色為黑色 paramJson.put("auto_color", false); JSONObject lineColor = new JSONObject(); lineColor.put("r", 0); lineColor.put("g", 0); lineColor.put("b", 0); paramJson.put("line_color", lineColor); printWriter.write(paramJson.toString()); // flush輸出流的緩衝 printWriter.flush(); in = httpURLConnection.getInputStream(); return in; } catch (Exception e) { e.printStackTrace(); } return in; }
拿到二維碼的流, 是讀到本地還是讀到物件儲存自己搞完事了, 需要注意的是幾個post請求入參:
path: 跳轉小程式的頁面地址, 前面不要 "/", 如果要帶引數不可以在這裡, 只能在第二個引數scene裡新增
scene: 填放使用者需要攜帶的引數
width: 尺寸
is_hyaline: 背景色要不要
auto_color: 線條顏色是否是自動的顏色, true的時候不需要設定RGB顏色
另外這個介面是不限次數的, 還有兩個是限制次數的介面,可以參考官方文件