我的小程序之旅四:掃普通二維碼進入小程序、打開短鏈接進入小程序


大家有沒有好奇過飯店掃碼點餐的時候,小程序是如何打開的?商家是怎么確認桌號的?為什么有的碼微信可以掃,支付寶也可以掃?

本篇文章將會給大家介紹:如何通過掃描二維碼進入微信小程序。

一、掃普通二維碼進入小程序

1、掃碼進入小程序管理頁

2、點擊開發管理-開發設置-掃普通鏈接二維碼打開小程序-添加

3、完善配置內容

(1)協議類型選擇https

(2)選擇小寫

(3)二維碼規則,這個看文檔有些人估計會比較迷糊,簡單理解一下就是一個https的路徑

(4)前綴占用規則選擇不占用

(5)校驗文件,按照說明文檔來,這個不難

(6)小程序的功能頁面,這個頁面就是你掃碼要打開的頁面

(7)測試范圍

(8)測試鏈接(選填)

有個比較坑的地方,這個如果沒有發布到線上,測試規則和測試鏈接都要一段時間才生效。

4、使用二維碼生成工具生成二維碼,然后掃碼就可以打開了

我一般都是使用草料網生成二維碼:生成二維碼二維碼解碼

二、打開短鏈接進入小程序

1、使用AppId和AppSecret獲取token

    /**
     * https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential
     * 請求參數   屬性         類型       默認值    必填     說明
     * @param   appId         string                 是       小程序 appId
     * @param   secret         string                 是       小程序 appSecret

     * 返回值
     * @return  JSON 數據包
     *           屬性         類型       說明
     *          access_token string      token
     *          expires_in     string      失效時間
     *
     *          errcode 的合法值
     *          值             說明                         最低版本
     *          -1             系統繁忙,此時請開發者稍候再試
     *          0             請求成功
     *          40029         code 無效
     *          45011         頻率限制,每個用戶每分鍾100次
     */
    JSONObject getAccessToken(String appId,String secret);
    @Override
    public JSONObject getAccessToken(String appId, String secret) {
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret;
        String str = restTemplate.getForObject(url, String.class);
        log.info("api/wx-mini/getAccessToken:" + str);
        if (StringUtils.isEmpty(str)) {
            return null;
        } else {
            return JSONObject.parseObject(str);
        }
    }

2、構建生成URL Schema的參數

JSONObject data = new JSONObject();
//設置當前鏈接打開的小程序頁面路徑
data.put("path","你的小程序頁面路徑");
//設置跳轉到當前頁面的參數,參數格式如下
data.put("query", "id=1&status=1");
//當前小程序打開的版本,develop(開發版)、trial(體驗版)、release(線上版)
data.put("env_version", "develop");
//鏈接是否會失效,微信官方有限制永久鏈接的個數
data.put("is_expire", true);
//按天數過期
data.put("expire_type", 1);
//30天后過期
data.put("expire_interval", 30);

3、生成微信小程序的打開鏈接

    /**
     * https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN
     * 請求參數   屬性             類型       默認值    必填     說明
     * @param   accessToken         string                 是       小程序 發送憑證
     * @param   data             jsonObject             是       小程序 發送數據

     * 返回值
     * @return  JSON 數據包
     *           屬性         類型       說明
     *          errmsg       string      錯誤消息
     *          msgid         string      消息ID
     *
     *          errcode 的合法值
     *          值             說明                         最低版本
     *          -1             系統繁忙,此時請開發者稍候再試
     *          0             請求成功
     *          40029         code 無效
     *          45011         頻率限制,每個用戶每分鍾100次
     */
    JSONObject generateUrlLink(String accessToken ,JSONObject data);
    @Override
    public JSONObject generateUrlLink(String accessToken, JSONObject data) {
        String url = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + accessToken;
        return getResult(data, url);
    }

    private JSONObject getResult(JSONObject data, String url) {
        HttpHeaders headers = new HttpHeaders();
        HttpMethod method = HttpMethod.POST;
        // 以表單的方式提交
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        //將請求頭部和參數合成一個請求
        HttpEntity<JSONObject> requestEntity = new HttpEntity<>(data, headers);
        //執行HTTP請求,將返回的結構使用ResultVO類格式化
        ResponseEntity<JSONObject> response = restTemplate.exchange(url, method, requestEntity, JSONObject.class);
        return response.getBody();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM