现在的问题是签名一直过不去 感觉是排序没生效
function sign() {
var signUri = request.url.replace("{{server}}", "").split("?")[0];
var params = request.url.substring(request.url.indexOf("?") + 1).split("&");
console.log(params);
var paramArray = [];
params.forEach(function (value) {
if (value.startsWith( 'sign=') && (value.startsWith( 'sign='))) {
if (value.startsWith( "signt")) {
paramArray.push("signt=" + apt.globals.get("signt"));
} else if (value.startsWith( "appkey")) {
paramArray.push("appkey=" + apt.globals.get("appkey"));
} else if (value.startsWith( "nonce")) {
paramArray.push("nonce=" + apt.globals.get("nonce"));
} else {
paramArray.push(value);
}
}
});
paramArray.sort();
console.log(paramArray)
var md5Str = signUri + '_' + paramArray.join('_') + '_' + apt.globals.get("secretKey");
var sign = $.md5($.base64.encode(md5Str));
console.log(sign)
return sign;
}
这是postman控制台的请求日志截图
// sign计算
function sign() {
var signUri = request.url.replace("{{server}}", "").split("?")[0];
var params = request.url.substring(request.url.indexOf("?") + 1).split("&");
console.log(params);
var paramArray = [];
params.forEach(function (value) {
if (!_.startsWith(value, 'sign=') && (!_.startsWith(value, 'sign='))) {
if (_.startsWith(value, "signt")) {
paramArray.push("signt=" + pm.environment.get("signt"));
} else if (_.startsWith(value, "appkey")) {
paramArray.push("appkey=" + pm.environment.get("appkey"));
} else if (_.startsWith(value, "nonce")) {
paramArray.push("nonce=" + pm.environment.get("nonce"));
} else {
paramArray.push(value);
}
}
});
paramArray.sort();
console.log(paramArray)
var md5Str = signUri + '_' + paramArray.join('_') + '_' + pm.environment.get("secretKey");
console.log(md5Str)
var sign = CryptoJS.MD5(encodeURIComponent(md5Str)).toString();
// 设置sign
console.log(sign)
return sign;
}
这是原postman的签名算法
如果我哪里转错了 能指正一下最好
再次感谢
想确认下 是我的使用方式不对 还是暂时排序功能不支持
支持排序的。原生js支持是没有问题的。
新版已支持查看预(后)执行脚本的执行情况(日志),https://doc.apipost.cn/8157c623fbd095b4