知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
Java 生成微信小程序二維碼(可以指定小程序頁面 與 動(dòng)態(tài)參數(shù))
發(fā)表時(shí)間:2020-11-20
發(fā)布人:葵宇科技
瀏覽次數(shù):116
一、準(zhǔn)備工作
- 微信公眾平臺(tái)接口調(diào)試工具
- 小程序的唯一標(biāo)識(shí)(appid)
- 小程序的密鑰(secret)
二、獲取access_token
打開微信公眾平臺(tái)接口調(diào)試工具,在參數(shù)列表中輸入小程序的appid和secret,點(diǎn)擊檢查問題,如果appid和secret正確,則可以返回正確的access_token結(jié)果(圖中下方的紅框)

三、生成微信小程序二維碼
生成小程序二維碼官方文檔
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html
一共有三種生成二維碼的方式,可以根據(jù)使用場(chǎng)景去選擇,這里我使用的是第三種生成方式 wxacode.getUnlimited
wxacode.createQRCode
獲取小程序二維碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場(chǎng)景。通過該接口生成的小程序碼,永久有效,有數(shù)量限制,詳見獲取二維碼。
POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
wxacode.get
獲取小程序碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場(chǎng)景。通過該接口生成的小程序碼,永久有效,有數(shù)量限制,詳見獲取二維碼。
POST https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
wxacode.getUnlimited
獲取小程序碼,適用于需要的碼數(shù)量極多的業(yè)務(wù)場(chǎng)景。通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制。 更多用法詳見 獲取二維碼。
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
使用wxacode.getUnlimited生成小程序二維碼
獲取小程序碼,適用于需要的碼數(shù)量極多的業(yè)務(wù)場(chǎng)景。通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制。 更多用法詳見 獲取二維碼。
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

說明
通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制。用戶掃描該碼進(jìn)入小程序后,開發(fā)者需在對(duì)應(yīng)頁面獲取的碼中 scene字段的值,再做處理邏輯。
使用如下代碼可以獲取到二維碼中的 scene 字段的值。
調(diào)試階段可以使用開發(fā)工具的條件編譯自定義參數(shù) scene=xxxx 進(jìn)行模擬,開發(fā)工具模擬時(shí)的 scene 的參數(shù)值需要進(jìn)行 urlencode
// 這是首頁的 js
Page({
> 1 /**
2 * 接口調(diào)用憑證 access_token
3 */
4 public static String postToken(String appId, String appKey) throws Exception {
5
6 String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appKey;
7 URL url = new URL(requestUrl);
8 // 打開和URL之間的連接
9 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
10 connection.setRequestMethod("POST");
11 // 設(shè)置通用的請(qǐng)求屬性
12 connection.setRequestProperty("Content-Type", "application/json");
13 connection.setRequestProperty("Connection", "Keep-Alive");
14 connection.setUseCaches(false);
15 connection.setDoOutput(true);
16 connection.setDoInput(true);
17
18 // 得到請(qǐng)求的輸出流對(duì)象
19 DataOutputStream out = new DataOutputStream(connection.getOutputStream());
20 out.writeBytes("");
21 out.flush();
22 out.close();
23
24 // 建立實(shí)際的連接
25 connection.connect();
26 // 定義 BufferedReader輸入流來讀取URL的響應(yīng)
27 BufferedReader in;
28 if (requestUrl.contains("nlp"))
29 in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
30 else
31 in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
32 StringBuilder result = new StringBuilder();
33 String getLine;
34 while ((getLine = in.readLine()) != null) {
35 result.append(getLine);
36 }
37 in.close();
38 JSONObject jsonObject = JSONObject.parseObject(result.toString());
39 return jsonObject.getString("access_token");
40 }
調(diào)用微信接口生成微信小程序二維碼
1 /**
2 * 生成微信小程序二維碼
3 *
4 * @param filePath
5 * 本地生成二維碼路徑
6 * @param page
7 * 當(dāng)前小程序相對(duì)頁面 必須是已經(jīng)發(fā)布的小程序存在的頁面(否則報(bào)錯(cuò)),例如 pages/index/index, 根路徑前不要填加 /,不能攜帶參數(shù)(參數(shù)請(qǐng)放在scene字段里),如果不填寫這個(gè)字段,默認(rèn)跳主頁面
8 * @param scene
9 * 最大32個(gè)可見字符,只支持?jǐn)?shù)字,大小寫英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符請(qǐng)自行編碼為合法字符(因不支持%,中文無法使用 urlencode 處理,請(qǐng)使用其他編碼方式)
10 * @param accessToken
11 * 接口調(diào)用憑證
12 */
13 public static void generateQrCode(String filePath, String page, String scene, String accessToken) {
14
15 try {
16
17 //調(diào)用微信接口生成二維碼
18 URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken);
19 HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
20 httpURLConnection.setRequestMethod("POST");// 提交模式
21 // conn.setConnectTimeout(10000);//連接超時(shí) 單位毫秒
22 // conn.setReadTimeout(2000);//讀取超時(shí) 單位毫秒
23 // 發(fā)送POST請(qǐng)求必須設(shè)置如下兩行
24 httpURLConnection.setDoOutput(true);
25 httpURLConnection.setDoInput(true);
26 // 獲取URLConnection對(duì)象對(duì)應(yīng)的輸出流
27 PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
28 // 發(fā)送請(qǐng)求參數(shù)
29 JSONObject paramJson = new JSONObject();
30 //這就是你二維碼里攜帶的參數(shù) String型 名稱不可變
31 paramJson.put("scene", scene);
32 //注意該接口傳入的是page而不是path
33 paramJson.put("page", page);
34 //這是設(shè)置掃描二維碼后跳轉(zhuǎn)的頁面
35 paramJson.put("width", 200);
36 paramJson.put("is_hyaline", true);
37 paramJson.put("auto_color", true);
38 printWriter.write(paramJson.toString());
39 // flush輸出流的緩沖
40 printWriter.flush();
41
42 //開始獲取數(shù)據(jù)
43 BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
44 OutputStream os = new FileOutputStream(new File(filePath));
45 int len;
46 byte[] arr = new byte[1024];
47 while ((len = bis.read(arr)) != -1) {
48 os.write(arr, 0, len);
49 os.flush();
50 }
51 os.close();
52 } catch (Exception e) {
53 e.printStackTrace();
54 }
55
56 System.out.println("打開地址查看生成的二維碼:" + filePath);
57
58 }
測(cè)試類
1 public static void main(String[] args) throws Exception {
2
3 //獲取接口調(diào)用憑證access_token
4 String appId = "小程序id";//小程序id
5 String appKey = "小程序密鑰";//小程序密鑰
6 String token = postToken(appId, appKey);
7
8 //生成二維碼
9 generateQrCode("E:\\tools\\qrCode\\test.png", "pages/index/index", "aa=108&bb=2&cc=3", token);
10
11 }
注意
1 1.獲取小程序appId 與appKey
2 2.生成小程序二維碼頁面參數(shù)傳入的是page而不是path,其他的接口是path。
3 page后面不允許加參數(shù),參數(shù)需要通過scene傳入。而小程序也需要通過scene獲取參數(shù)。
4 3.生成小程序二維碼可將二維碼寫入本地,也可上傳至服務(wù)器。自行選擇
5
參考地址:
https://www.cnblogs.com/daipianpian/p/9239452.html
http://www.what21.com/u/10004/6756200547748968305.htm
生成小程序二維碼官方文檔
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html
相關(guān)案例查看更多
相關(guān)閱讀
- 小程序退款
- 云南網(wǎng)站建設(shè)首頁
- .net網(wǎng)站
- 昆明網(wǎng)站制作
- 小程序開發(fā)
- 小程序開發(fā)聯(lián)系方式
- 云南軟件開發(fā)
- 云南衛(wèi)視小程序
- 北京小程序開發(fā)
- 網(wǎng)站建設(shè)費(fèi)用
- 報(bào)廢車回收管理軟件
- 云南網(wǎng)站建設(shè)哪家好
- 百度自然排名
- 云南網(wǎng)絡(luò)公司
- 江蘇小程序開發(fā)
- 汽車報(bào)廢軟件
- 云南網(wǎng)站建設(shè)制作
- 網(wǎng)絡(luò)公司排名
- 區(qū)塊鏈
- painter
- web學(xué)習(xí)路線
- 云南網(wǎng)站建設(shè)專家
- 云南網(wǎng)站建設(shè)開發(fā)
- 百度快速排名
- 云南小程序制作
- 云南小程序定制
- 定制小程序開發(fā)
- 云南網(wǎng)站維護(hù)
- web服務(wù)
- 麗江小程序開發(fā)