// openAuthKey 密钥
const openAuthKey = "b4760f0e3f09b511ff8b94ca9125314b3ff42ef40f6a71174c07d2e9936";
// 获取请求体参数 (如果 requestBody 是对象形式,不需要解析)
const requestBody = pm.request.body.raw; // 这里假设 pm.request.body.raw 是一个 JSON 对象
// 检查 requestBody 是否已经是对象
let requestData_1;
if (typeof requestBody === 'string') {
try {
requestData_1 = JSON.parse(requestBody); // 如果是字符串,解析为对象
} catch (e) {
console.error("Failed to parse requestBody:", e.message);
return;
}
} else {
requestData = requestBody; // 如果已经是对象,直接使用
}
// 在此处进行签名处理操作
let NewrequestData = { ...requestData }; // 克隆对象
//NewrequestData.signId = "a0f9003163a343a98890e24f33a8fabd";
// 递归处理对象并构建字符串
function processMap(map, stringBuilder) {
const sortedKeys = Object.keys(map).sort();
sortedKeys.forEach(key => {
let value = map[key];
if (!value || (typeof value === 'object' && Object.keys(value).length === 0)) return;
stringBuilder.push(`${key}=`);
if (typeof value === 'object') {
let sb = [];
processMap(value, sb);
let subStr = sb.join("");
if (subStr.length > 0) {
stringBuilder.push(`|${subStr.slice(0, -1)}|`);
} else {
stringBuilder.push(subStr);
}
} else {
stringBuilder.push(value.toString());
}
stringBuilder.push("&");
});
}
const stringBuilder = [];
processMap(NewrequestData, stringBuilder);
if (stringBuilder.length > 0) {
stringBuilder.pop(); // 移除最后一个 '&'
}
const stringToSign = stringBuilder.join('') + `&key=${openAuthKey}`;
console.log(stringToSign);
// 使用 CryptoJS 生成 HMAC SHA512 签名
const signature = CryptoJS.HmacSHA512(stringToSign, openAuthKey).toString(CryptoJS.enc.Hex);
console.log("Generated signature:", signature);
console.log(requestBody);
// 将签名存储在变量中
pm.environment.set("signature", signature);
我把这个脚本放在项目的预执行脚本中,执行每个接口时都会先跑这个脚本,前七天都是可以的,突然就报错了。
字段改个名试试