摘要:換句話說,同一用戶,對同一個微信開放平臺下的不同應用,是相同的對于,微信程序碼在同一時間用來掉用小程序碼生成接口使用以及調用生成一個應用只有一個秘鑰,只有一個有效,且有效期是分鐘。
小程序二維碼的生成有三個不同的接口,針對不同的場景需求
下文介紹的是第二種,也是用的最多的一種:適用于需要的碼數量極多,或僅臨時使用的業務場景
接口地址:https://api.weixin.qq.com/wxa...
注意:通過該接口生成的小程序碼,永久有效,數量暫無限制。用戶掃描該碼進入小程序后,開發者需在對應頁面獲取的碼中 scene 字段的值,再做處理邏輯。使用如下代碼可以獲取到二維碼中的 scene 字段的值。調試階段可以使用開發工具的條件編譯自定義參數 scene=xxxx 進行模擬,開發工具模擬時的 scene 的參數值需要進行 urlencode
// 這是首頁的 js
Page({
onLoad: function(options) {
// options 中的 scene 需要使用 decodeURIComponent 才能獲取到生成二維碼時傳入的 scene
var scene = decodeURIComponent(options.scene)
}
})
如下內容為調用微信小程序二維碼接口,生成小程序二維碼圖片的Java實現【構造post請求,調用微信接口】
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
//參數說明,QRCreateBean對象中傳入自個需要的值。最主要的包括微信的accessToken以及小程序碼要存儲的內容
//要存儲的內容放到了scene參數中,掃碼后小程序要跳轉的頁面路徑page參數對應
public static String createPoster(QRCreateBean qrCreateBean) throws Exception { log.info("======生成微信小程序碼開始====="); String qrcodeName = "qr_" + qrCreateBean.getSerialNo(); long nowTime = System.currentTimeMillis(); //二維碼圖片 URL getCodeUrl = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + qrCreateBean.getAccessToken()); HttpURLConnection httpURLConnection = (HttpURLConnection) getCodeUrl.openConnection(); httpURLConnection.setRequestMethod("POST");// 提交模式 httpURLConnection.setDoOutput(true); httpURLConnection.setDoInput(true); PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream()); JSONObject paramJson = new JSONObject(); //在上線之前測試的版本中,頁面不能跳轉,跳轉頁面的參數名定義為path,可在模擬器上進行測試 //paramJson.accumulate("scene", qrCreateBean.getSerialNo()).accumulate("path", "pages/goods/goods"); //上線后,跳轉頁面的參數需定義為page,否則會找不到跳轉頁面 paramJson.accumulate("scene", qrCreateBean.getSerialNo()).accumulate("page", "pages/goods/goods"); 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()); printWriter.flush(); String contentType = httpURLConnection.getContentType(); if (contentType.contains("json")) { log.info("調用微信小程序生成接口出錯,token失效"); return "1"; } else { BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream()); //小程序碼圖片寫出存儲的路徑 File file = new File("srcmain esourcesimage" + qrcodeName + ".png"); OutputStream ost = new FileOutputStream(file); int len; byte[] arr = new byte[1024]; while ((len = bis.read(arr)) != -1) { ost.write(arr, 0, len); ost.flush(); } ost.close(); log.info("========生成微信小程序碼結束===========");
}
注意:
對于accessToken有一個坑
openId:是表示用戶在你的當前應用中的唯一標示,比如小程序,微信公眾號等,這些都算是一個應用,如果你有多個應用,同一個用戶的openId可能并不相同
unionid:借用微信官方文檔中的話來說,如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的
對于accessToken,微信程序碼openId在同一時間用來掉用小程序碼生成接口【使用appid以及secret調用生成(一個應用只有一個秘鑰secret)】,只有一個有效,且有效期是5分鐘。當有其他操作再獲取accessToken時,之前的token會失效。所以每次在生成小程序二維碼之前都要重新獲取一下token。
如果用失效的accessToken去調用小程序碼生成接口,返回內容為json格式的一個錯誤提示。若正常返回小程序碼圖片,返回內容的type為image/jepg。如在上文的代碼中,需要對調用接口后返回的內容進行判斷!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75755.html
摘要:為了方便大家了解并入門微信小程序,我將一些可能會需要的知識,列在這里,讓大家方便的從零開始學習一微信小程序的特點張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應用,它出現了觸手可及的夢想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會需要的知識,列在這里,讓大家方便的從零開始學習; 一:微信小程序的特點 張小龍:張小龍全面闡述小程...
摘要:為了方便大家了解并入門微信小程序,我將一些可能會需要的知識,列在這里,讓大家方便的從零開始學習一微信小程序的特點張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應用,它出現了觸手可及的夢想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會需要的知識,列在這里,讓大家方便的從零開始學習; 一:微信小程序的特點 張小龍:張小龍全面闡述小程...
摘要:為了方便大家了解并入門微信小程序,我將一些可能會需要的知識,列在這里,讓大家方便的從零開始學習一微信小程序的特點張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應用,它出現了觸手可及的夢想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會需要的知識,列在這里,讓大家方便的從零開始學習; 一:微信小程序的特點 張小龍:張小龍全面闡述小程...
摘要:微信小程序仿今日美食初學微信小程序,嗯,還不錯嘛,挺有趣的于是自己動手擼了一個。開發工具下載開發者工具微信小程序官網,下載好后就可以進行開發了喲。 wechat-todayFood 微信小程序仿今日美食food 初學微信小程序,嗯,還不錯嘛,挺有趣的! 于是自己動手擼了一個?。你別說一看標題就知道我是吃貨呀,我是不想這么快就被揭穿的,但是這個小程序就是這么有意思呀。好了我要進入正題了,...
閱讀 5265·2021-09-22 15:59
閱讀 1856·2021-08-23 09:42
閱讀 2561·2019-08-29 18:42
閱讀 3444·2019-08-29 10:55
閱讀 2058·2019-08-27 10:57
閱讀 1759·2019-08-26 18:27
閱讀 2722·2019-08-23 18:26
閱讀 2912·2019-08-23 14:40