生成小程序二維碼傳參scene的問題
一、報錯提示
'{"errcode":40169,"errmsg":"invalid length for scene, or the data is not json string hint: [MHecNHnre-dcD9Wa]"}'
原因:參數 scene 超過了32位
二、官方文檔,如圖
三、解決方法(有些方法不治本)
(1)、請求接口方式
把scene數據md5加密;
後端 redis:key-value(md5加密後的scene:scene原文) 或 數據表 存scene的數據;
小程序獲取到scene之後,請求後端接口根據md5後的值獲取加密前的數據。
(2)、縮短參數名
比如:
$param['user_id'] = 999;
$param['shopper'] = 3;
$data['scene'] = http_build_query($param);
縮短爲:
$param['u'] = 999;
$param['s'] = 3;
$data['scene'] = http_build_query($param);
(3)、英文字符隔開參數,和前端約定每個位置的值代表的含義(推薦這個)
比如:
$param['user_id'] = 999;
$param['shopper'] = 3;
$data['scene'] = http_build_query($param);
可以用英文字符 ,;_等隔開,如下
$userId = 999;
$shopper = 3;
$data['scene'] = $userId . ';' . $shopper;