解決微信生成小程式二維碼scene引數過長的方法
阿新 • • 發佈:2021-01-07
小程式二維碼scene引數限定長度為32位字元,但是實際開發中可能有很多的引數需要傳遞
對於目前32位長度的限制
方案一、中間頁 + 短引數
新建一箇中間空白跳轉頁面,每次生成的二維碼都是這個頁面,
訪問這個頁面時,將引數中的scene的值,去指定介面獲取完整的 帶引數的 連結,
然後跳轉過去。 適用於一個解決方案中有很多個頁面需要生成二維碼來跳轉;
方案二、短引數(推薦
)
二維碼指向到特定頁面,scene值為短引數,進入頁面時先判斷是否有scene的值,如果有再請求介面獲取完整的引數(json格式),
然後再使用這個引數去調真正的業務介面;
方案三、md5加密
1、後臺在生成小程式二維碼的地方,使用md5加密生成一個小於等於 32 位的 token ,並將scene 原有的值和token在資料庫中,或者redis中儲存起來, 然後把這個 token 填入生成小程式碼介面的 scene 引數中。
2、小程式在掃描二維碼之後,將得到的 scene 中的token提交給後端,後端根據token,新增一個介面 用於解析小程式碼獲取的 token ,返回給真實的scene引數 返回給前端。
php程式碼
//入庫,再返回
$scene='87309*2*hq_activity*62*live_player*57';
$scene_token = substr(md5($scene), 8, 16);
$scene_data = array(
'scene' => $scene,
'token' => $scene_token
);
後臺mysql資料庫中存入真實的引數 然後在進行比對