生成小程序二维码传参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;