90 lines
2.5 KiB
JavaScript
90 lines
2.5 KiB
JavaScript
// 获取预先设置为环境变量的 api_key
|
|
let key = pm.environment.get("api_key");
|
|
|
|
// 存放所有需要用来签名的参数
|
|
let param = {};
|
|
|
|
// 加入 query 参数
|
|
//let queryParams = pm.request.url.query;
|
|
// 获取10位时间戳
|
|
var times = Math.round(new Date().getTime() / 1000).toString();
|
|
// queryParams.each(item => {
|
|
// if (item.key == 'timestamp') { // 因为设置的全局参数,获取的时间戳有问题,所以这里重新定义时间戳
|
|
// param[item.key] = times;
|
|
// } else {
|
|
// param[item.key] = item.value;
|
|
// }
|
|
// });
|
|
|
|
// 加入 body 参数
|
|
if (pm.request.body) {
|
|
let formData;
|
|
switch (pm.request.body.mode) {
|
|
case 'formdata':
|
|
formData = pm.request.body.formdata;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (formData) {
|
|
formData.each(item => {
|
|
if (!item.disabled && item.value !== '') { // 启用且非空参数值的参数才参与签名
|
|
if (item.key != 'r' && item.key != 'c' && item.key != 'i' && item.key != 'm' && item.key != 'do') {
|
|
param[item.key] = item.value;
|
|
console.log(item);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
// 取 key
|
|
let keys = [];
|
|
for (let key in param) {
|
|
// 注意这里,要剔除掉 sign 参数本身
|
|
if (key !== 'sign') {
|
|
keys.push(key);
|
|
}
|
|
}
|
|
|
|
// 参数名 ASCII 码从小到大排序(字典序)
|
|
keys.sort();
|
|
|
|
// 转成键值对
|
|
let paramPair = [];
|
|
for (let i = 0, len = keys.length; i < len; i++) {
|
|
let k = keys[i];
|
|
if (k != 'r' && k != 'c' && k != 'i' && k != 'm' && k != 'do') {
|
|
paramPair.push(k + '=' + encodeURIComponent(param[k])) // urlencode 编码
|
|
}
|
|
}
|
|
console.log(paramPair);
|
|
// 最后加上 key
|
|
//paramPair.push(key);
|
|
|
|
// 拼接
|
|
let stringSignTemp = paramPair.join('&');
|
|
console.log(stringSignTemp);
|
|
let tt = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(times + key + stringSignTemp));
|
|
|
|
let sign = CryptoJS.MD5(stringSignTemp + key + tt + times).toString();
|
|
console.log(sign);
|
|
let formData = pm.request.body.formdata;
|
|
formData['sign'] = sign;
|
|
formData['timestamp'] = times;
|
|
console.log(formdata);
|
|
pm.request.body.update({
|
|
mode: 'formdata',
|
|
formdata: formData
|
|
});
|
|
// queryParams.upsert({
|
|
// key: 'sign',
|
|
// value: sign,
|
|
// });
|
|
// // 重新赋值时间戳参数,因为不使用这里,全局变量生成的时间戳会跟这里的时间戳有误差,导致签名不一致
|
|
// queryParams.upsert({
|
|
// key: 'timestamp',
|
|
// value: times,
|
|
// });
|