大家有沒有好奇過飯店掃碼點餐的時候,小程序是如何打開的?商家是怎么確認桌號的?為什么有的碼微信可以掃,支付寶也可以掃?
本篇文章將會給大家介紹:如何通過掃描二維碼進入微信小程序。
一、掃普通二維碼進入小程序
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(); }
