摘要:換句話說,同一用戶,對(duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用,是相同的對(duì)于,微信程序碼在同一時(shí)間用來掉用小程序碼生成接口使用以及調(diào)用生成一個(gè)應(yīng)用只有一個(gè)秘鑰,只有一個(gè)有效,且有效期是分鐘。
小程序二維碼的生成有三個(gè)不同的接口,針對(duì)不同的場(chǎng)景需求
下文介紹的是第二種,也是用的最多的一種:適用于需要的碼數(shù)量極多,或僅臨時(shí)使用的業(yè)務(wù)場(chǎng)景
接口地址:https://api.weixin.qq.com/wxa...
注意:通過該接口生成的小程序碼,永久有效,數(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({
onLoad: function(options) {
// options 中的 scene 需要使用 decodeURIComponent 才能獲取到生成二維碼時(shí)傳入的 scene
var scene = decodeURIComponent(options.scene)
}
})
如下內(nèi)容為調(diào)用微信小程序二維碼接口,生成小程序二維碼圖片的Java實(shí)現(xiàn)【構(gòu)造post請(qǐng)求,調(diào)用微信接口】
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
//參數(shù)說明,QRCreateBean對(duì)象中傳入自個(gè)需要的值。最主要的包括微信的accessToken以及小程序碼要存儲(chǔ)的內(nèi)容
//要存儲(chǔ)的內(nèi)容放到了scene參數(shù)中,掃碼后小程序要跳轉(zhuǎn)的頁面路徑page參數(shù)對(duì)應(yīng)
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(); //在上線之前測(cè)試的版本中,頁面不能跳轉(zhuǎn),跳轉(zhuǎn)頁面的參數(shù)名定義為path,可在模擬器上進(jìn)行測(cè)試 //paramJson.accumulate("scene", qrCreateBean.getSerialNo()).accumulate("path", "pages/goods/goods"); //上線后,跳轉(zhuǎn)頁面的參數(shù)需定義為page,否則會(huì)找不到跳轉(zhuǎn)頁面 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("調(diào)用微信小程序生成接口出錯(cuò),token失效"); return "1"; } else { BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream()); //小程序碼圖片寫出存儲(chǔ)的路徑 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("========生成微信小程序碼結(jié)束===========");
}
注意:
對(duì)于accessToken有一個(gè)坑
openId:是表示用戶在你的當(dāng)前應(yīng)用中的唯一標(biāo)示,比如小程序,微信公眾號(hào)等,這些都算是一個(gè)應(yīng)用,如果你有多個(gè)應(yīng)用,同一個(gè)用戶的openId可能并不相同
unionid:借用微信官方文檔中的話來說,如果開發(fā)者擁有多個(gè)移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用、和公眾帳號(hào)(包括小程序),可通過 UnionID 來區(qū)分用戶的唯一性,因?yàn)橹灰峭粋€(gè)微信開放平臺(tái)帳號(hào)下的移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào)(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對(duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用,unionid是相同的
對(duì)于accessToken,微信程序碼openId在同一時(shí)間用來掉用小程序碼生成接口【使用appid以及secret調(diào)用生成(一個(gè)應(yīng)用只有一個(gè)秘鑰secret)】,只有一個(gè)有效,且有效期是5分鐘。當(dāng)有其他操作再獲取accessToken時(shí),之前的token會(huì)失效。所以每次在生成小程序二維碼之前都要重新獲取一下token。
如果用失效的accessToken去調(diào)用小程序碼生成接口,返回內(nèi)容為json格式的一個(gè)錯(cuò)誤提示。若正常返回小程序碼圖片,返回內(nèi)容的type為image/jepg。如在上文的代碼中,需要對(duì)調(diào)用接口后返回的內(nèi)容進(jìn)行判斷!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75755.html
摘要:為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí)一微信小程序的特點(diǎn)張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應(yīng)用,它出現(xiàn)了觸手可及的夢(mèng)想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí); 一:微信小程序的特點(diǎn) 張小龍:張小龍全面闡述小程...
摘要:為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí)一微信小程序的特點(diǎn)張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應(yīng)用,它出現(xiàn)了觸手可及的夢(mèng)想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí); 一:微信小程序的特點(diǎn) 張小龍:張小龍全面闡述小程...
摘要:為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí)一微信小程序的特點(diǎn)張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應(yīng)用,它出現(xiàn)了觸手可及的夢(mèng)想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí); 一:微信小程序的特點(diǎn) 張小龍:張小龍全面闡述小程...
摘要:微信小程序仿今日美食初學(xué)微信小程序,嗯,還不錯(cuò)嘛,挺有趣的于是自己動(dòng)手?jǐn)]了一個(gè)。開發(fā)工具下載開發(fā)者工具微信小程序官網(wǎng),下載好后就可以進(jìn)行開發(fā)了喲。 wechat-todayFood 微信小程序仿今日美食food 初學(xué)微信小程序,嗯,還不錯(cuò)嘛,挺有趣的! 于是自己動(dòng)手?jǐn)]了一個(gè)?。你別說一看標(biāo)題就知道我是吃貨呀,我是不想這么快就被揭穿的,但是這個(gè)小程序就是這么有意思呀。好了我要進(jìn)入正題了,...
閱讀 5292·2021-09-22 15:59
閱讀 1872·2021-08-23 09:42
閱讀 2572·2019-08-29 18:42
閱讀 3456·2019-08-29 10:55
閱讀 2071·2019-08-27 10:57
閱讀 1767·2019-08-26 18:27
閱讀 2731·2019-08-23 18:26
閱讀 2928·2019-08-23 14:40