...
https://testopen.rabbitpre.com/union-login.html?nonce=123456&opfid=65499870709224111111&uid=uidjj×tamp=1625194549051&signature=c1e0401e25926f3d42de2f03fc989eec4f15b01d&redirecturl=https://home.rabbitpre.com
签名帮助(使用postman调试接口)
第一步:
第二步:填写脚本
脚本:
代码块 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
/**
* 通过request.data获取body的内容,这个是postman内置变量
* 常用内置参数如下:
* request 获取请求的参数,包括头和请求体
* responseHeaders 返回值的header
* responseBody 返回值的body
* responseCode 返回值的http code
*/
var params = pm.request.url.query.members;
// console.log("params:",params)
var map = new Map();
for (var i=0; i<params.length; i++)
{
// console.log(params[i])
if(params[i].key=="signature"){
console.log("--------------")
continue
}
map.set(params[i].key,params[i].value)
}
console.log(map)
var arrayObj=Array.from(map);
arrayObj.sort(function(a,b){return a[0].localeCompare(b[0])})
console.log(arrayObj)
// //body中参数放入数组
// var list = [params.subsystemId,params.clientId,params.account,params.timestamp];
// console.log("list---->" + list);
// // 字段排序:这里建议使用默认的排序,优先比较字符的第一个,相同则比对第二个...
// //list.sort(function(a, b){
// //return b-a; //数字的排序
// // return b.localeCompare(a); //字符串排序
// //});
// console.log("list ---->" + list);
//字段重新组装拼接
var tmp='';
for(var i=0;i<arrayObj.length;i++){
tmp += arrayObj[i][0]+"="+arrayObj[i][1]+"&";
}
tmp = tmp.substring(0,tmp.lastIndexOf("&"))
console.log("tmp ---->" + tmp);
//生成签名串:这里使用SHA1算法并使用十六进制编码
//CryptoJS-为JavaScript提供了各种各样的加密算法
//作者:CryptoJS<>(https://code.google.com/p/crypto-js/)
// var signHmacSHA1=CryptoJS.SHA1(tmp).toString(CryptoJS.enc.Hex).toUpperCase();
var signHmacSHA1=CryptoJS.SHA1(tmp).toString(CryptoJS.enc.Hex);
console.log("sign ---->" + signHmacSHA1);
//放入环境变量
//pm.environment.set("sha1msg",signHmacSHA1)
postman.setGlobalVariable("signature", signHmacSHA1); |