/**
* 对不是字符串,数字类型的数据,会进行jsonencode
* 字符串按照key升序生成排序使用&符号进行分割a=1&b=2格式拼接生成一个字符串,给加密工具进行加密
* @params data 需要进行加密计算的数据内容
* @params clourse 加密函数
*/
function signGenerate(data,clourse=function(el){
return encodeURIComponent(el);
}) {
if (typeof data == 'object' && Object.keys(data).length > 0) {
let _data = [];
for (let key in data) {
if (data.hasOwnProperty(key)) {
let val = data[key];
if (typeof val != 'string' && typeof val != 'number') {
val = JSON.stringify(val)
}
_data.push({
key: key,
val: val
})
}
}
if (!_data) {
return data;
}
_data.sort((a, b) => {
// a.sort(function(a,b){return a.localeCompare(b)});正序排列
//a.sort(function(a,b){return b.localeCompare(a)}); 反序排列
return a.key.localeCompare(b.key)
})
let signString = '';
for(let el of _data)
{
signString +=`${el.key}=${el.val}&`;
}
signString = signString.slice(0,-1);
data['sign'] = clourse(signString);
}
return data;
}
console.log(signGenerate({ "key": 66, "b": 2 }));
console