接口加签处理
接口签名通过appid,appsecret,nonce(随机数字)timestamp和其他参数经过一定的规则组成的字符串,然后经
过加密之后的sign值。sign签名的值一般是通过query参数或者请求头参数传递给接口实现鉴权。
nonce:唯一标识,用于标记防止重复提交
//获取到appid和apisecret var api_id = "JI829kqp"; var api_secret = "sjiajdiaij22221"; console.log(api_id); console.log(api_secret);
//获得时间戳 var timestamp = new Date().getTime(); console.log(timestamp); //获取到params里面传输的参数 var params_value = pm.request.url.query.members; console.log("params_value="+params_value); //获得body里面传输的参数,//JSON.parse()把字符串转化成[object Object]对象。 //JSON.stringify()把对象转化成字符串。 var body_value = request.data; console.log("body_value1="+JSON.stringify(body_value)); //将params里面传输的参数和body里面传输的参数组合到一个JSON对象。 for(var i=0;i<params_value.length;i++){ body_value[params_value[i].key] = params_value[i].value; } console.log("body_value2="+JSON.stringify(body_value)); //把body_value2的key按照升序排列。 body_value = objectsort(body_value); console.log("body_value3="+JSON.stringify(body_value)); //把json对象转化成key=value&key=value这种格式 var new_string = ""; for(var key in body_value){ new_string += key + "=" + body_value[key] + "&"; } // new_string = new_string.substr(0,new_string.length-1); console.log("new_string="+JSON.stringify(new_string)); //获得sign var sign = "api_id="+api_id+"&"+"api_secret="+api_secret+"&"+new_string+"timestamp="+timestamp; sign = CryptoJS.MD5(sign).toString().toUpperCase(); console.log("sign="+sign); pm.globals.set("sign",sign); //把对象的key升序排序函数 function objectsort(obj){ var new_key = Object.keys(obj).sort(); console.log(new_key); var arr = {}; for(var i=0;i<new_key.length;i++){ arr[new_key[i]] = obj[new_key[i]]; } return arr; }