【小程序】生成小程序碼

  • 什么是小程序碼劫拗?

小程序碼通過后臺接口獲取轧叽,掃描小程序碼可以跳轉(zhuǎn)到小程序?qū)?yīng)的頁面所有生成的小程序碼永久有效,可放心使用愉舔。

  • 獲取小程序碼的方式
    1. 獲取有限制的小程序碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場景伙菜。生成小程序碼轩缤,可接受 path 參數(shù)較長,生成個數(shù)受限贩绕,謹(jǐn)慎使用火的。官方接口文檔
    2. 獲取無限制的小程序碼,適用于需要的碼數(shù)量極多的業(yè)務(wù)場景淑倾。生成小程序碼馏鹤,可接受頁面參數(shù)較短,生成個數(shù)不受限娇哆。官方接口文檔
    3. 獲取小程序二維碼湃累,適用于需要的碼數(shù)量較少的業(yè)務(wù)場景。生成二維碼碍讨,可接受 path 參數(shù)較長治力,生成個數(shù)受限官方接口文檔
  • 注意事項(xiàng)
    1. 接口只能生成已發(fā)布的小程序碼,只發(fā)了體驗(yàn)版的小程序勃黍,也不能生成小程序碼
    2. 獲取有限制的小程序碼接口 加上 獲取小程序二維碼接口宵统,總共生成的碼數(shù)量限制為 100,000,請謹(jǐn)慎調(diào)用覆获。
    3. 獲取無限制的小程序碼 調(diào)用分鐘頻率受限(5000次/分鐘)榜田,如需大量小程序碼,建議預(yù)生成锻梳。
  • 生成小程序碼代碼
public class MiniAppUtil {
    
    /**
     * 獲取小程序碼地址箭券,適用于需要的碼數(shù)量極多的業(yè)務(wù)場景 通過該接口生成的小程序碼,永久有效疑枯,數(shù)量暫無限制辩块。
     */
    public static final String GET_WXACODE_UNLIMIT_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s";

    /**
     * 獲取小程序碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場景。 通過該接口生成的小程序碼废亭,永久有效国章,有數(shù)量限制
     */
    public static final String GET_WXACODE_URL = "https://api.weixin.qq.com/wxa/getwxacode?access_token=%s";
    

    /**
     * 獲取無限制小程序碼
     * @param sceneStr
     * @param page
     * @param filePath
     * @param uploadDomainUrl
     * @return 生成成功的小程序碼http訪問路徑
     */
    public static String getWxacodeUnlimit(String sceneStr, String page, String filePath, String uploadDomainUrl, String accessToken)throws Exception{
        return getWxacode(sceneStr, page,filePath, uploadDomainUrl, true, accessToken);
    }

    /**
     * 獲取有限制小程序碼
     * @param page
     * @param filePath
     * @param uploadDomainUrl
     * @return 生成成功的小程序碼http訪問路徑
     */
    public static String getWxacodeLimit(String page, String filePath, String uploadDomainUrl, String accessToken)throws Exception{
        return getWxacode(null,page, filePath, uploadDomainUrl, false, accessToken);
    }

    /**
     * 從微信上獲取小程序碼
     * @param sceneStr 場景值
     * @param page 掃碼后跳轉(zhuǎn)到的小程序頁面, 可選 不填默認(rèn)小程序首頁
     * @param filePath 小程序碼圖片存放路徑
     * @param uploadDomainUrl http訪問目錄
     * @param isUnlimit 是否有數(shù)量限制的小程序碼,如果是沒有限制的豆村,需要傳場景值 sceneStr
     * @return String
     * @throws Exception
     */
    private static String getWxacode(String sceneStr, String page, String filePath, String uploadDomainUrl, boolean isUnlimit, String accessToken) throws Exception{
        try {
            String fileName = System.currentTimeMillis() + ".jpg";
            Map<String, Object> params = new HashMap<>();
            params.put("width", 430);//二維碼寬度
            String url = String.format(GET_WXACODE_URL, accessToken);
            if(isUnlimit){
                if(StringUtil.isNotEmpty(page)) {
                    params.put("page", page);//要跳轉(zhuǎn)的頁面,正式發(fā)布后才能傳值
                }
                params.put("scene", sceneStr);//sceneStr值長度有限制液兽,最大32個可見字符
                url = String.format(GET_WXACODE_UNLIMIT_URL, accessToken);
            }else {
                params.put("path", page);
            }

            CloseableHttpClient httpClient = HttpClientBuilder.create().build();

            HttpPost httpPost = new HttpPost(url);
            httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
            String body = JSON.toJSONString(params);
            StringEntity entity;

            entity = new StringEntity(body);
            entity.setContentType("image/png");
            httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost);
            if(!response.getEntity().isStreaming()){ //如果小程序碼一直異常時(shí),可以放開if判斷掌动,輸出異常錯誤信息
                log.error("getWxacode exception:{}", EntityUtils.toString(response.getEntity(), "UTF-8"));
                return null;
            }

            File targetFile = new File(filePath);
            if(!targetFile.exists()){
                targetFile.mkdirs();
            }
            try(InputStream inputStream = response.getEntity().getContent();
                FileOutputStream out = new FileOutputStream(filePath + fileName)) {
                byte[] buffer = new byte[8192];
                int bytesRead = 0;
                while((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                    out.write(buffer, 0, bytesRead);
                }
                out.flush();
            }

            return uploadDomainUrl + fileName;
        } catch (Exception e) {
            log.error("getWxacode exception:", e);
            return null;
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末四啰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粗恢,更是在濱河造成了極大的恐慌柑晒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眷射,死亡現(xiàn)場離奇詭異匙赞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妖碉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門涌庭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人欧宜,你說我怎么就攤上這事坐榆。” “怎么了鱼鸠?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵猛拴,是天一觀的道長羹铅。 經(jīng)常有香客問我蚀狰,道長,這世上最難降的妖魔是什么职员? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任麻蹋,我火速辦了婚禮,結(jié)果婚禮上焊切,老公的妹妹穿的比我還像新娘扮授。我一直安慰自己,他們只是感情好专肪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布刹勃。 她就那樣靜靜地躺著,像睡著了一般嚎尤。 火紅的嫁衣襯著肌膚如雪荔仁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音乏梁,去河邊找鬼次洼。 笑死,一個胖子當(dāng)著我的面吹牛遇骑,可吹牛的內(nèi)容都是我干的卖毁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼落萎,長吁一口氣:“原來是場噩夢啊……” “哼亥啦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起模暗,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤禁悠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兑宇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碍侦,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年隶糕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓷产。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡枚驻,死狀恐怖濒旦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情再登,我是刑警寧澤尔邓,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站锉矢,受9級特大地震影響梯嗽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沽损,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一灯节、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绵估,春花似錦炎疆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缝左,卻和暖如春亿遂,著一層夾襖步出監(jiān)牢的瞬間螟蒸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工崩掘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留七嫌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓苞慢,卻偏偏與公主長得像诵原,于是被迫代替她去往敵國和親挽放。 傳聞我的和親對象是個殘疾皇子绍赛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353