不奢望岁月静好 只希望点滴积累

0%

postman添加sign签名

安装postman插件

1
https://www.jianshu.com/p/451e0d009304

常用功能使用

1
https://www.jianshu.com/p/15f8dfaaecef

生成sign签名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. 编写脚本 
以order项目为例(下边sign.js)


2. 在请求中添加脚本
managerEnvirenment -> add -> sign (值可以随便给、这个是用来给postman使用的、在发送请求时会替换为计算出来的sign值)
如下图所示


3. 发送请求、可以发现签名是ok的


4. 如果发现签名不对、可以调试脚本
在chrome地址栏中输入:chrome://flags/#debug-packed-apps ,开启Debugging for packed app
输入chrome://inspect/#apps,选择postman的inspect 会弹出调试框

在弹出的调试框里、选择elements在下边可以看到console
可以查看签名的方式是否正确(配合idea调试、对比签名方式和签名结果)
idea调试:以debug模式运行、
在指定合适的位置打断点、代码逻辑运行到断点处即会被中断掉、可以进行单步调试~~
查找问题出现的原因

sign.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var appkey = '6615be7b44ca4ab9ac03060088202792'; // 自动化测试的key
//获取当前时间
function createTime() {
return (new Date()).valueOf();
}
var time = createTime();
var method = request.method;
delete request.data["sign"];
console.log("request data is : " + request.data);
var keys = Object.keys(request.data), i, len = keys.length;
keys.sort();
console.log("sortedKeys is : " + keys)
// Build the request body string from the Postman request.data object
var requestBody = "";
var firstpass = true;

// 构造数据为 key=param&key=param....字符串
for(var index in keys){
if (keys[index] == "sign") {
continue;
}
if(!firstpass){
requestBody += "&";
}

if(keys[index]=="create_time"){
request.data[keys[index]]=time;
console.log(request.data[keys[index]]);
}
requestBody += keys[index] + "=" + request.data[keys[index]];
firstpass = false;
}
requestBody += '&key=' + appkey;
console.log("request body is : " + requestBody);

var md5=CryptoJS.MD5(requestBody, appkey);
var base64md5 = CryptoJS.enc.Base64.stringify(md5);
console.log(base64md5);
postman.setEnvironmentVariable('sign', base64md5); // 将变量放入postman 变量中;

图一、添加postman环境变量
image.png
image.png
image.png

图二、postman脚本调试
image.png
image.png
image.png