问题:

一、签名参数sign算法由文字描述,算法需自己编写

二、 参数param_json为变化的json串(json串内订单号唯一)

解决:

一、 签名sign:

1. 手动拼接后在https://www.cmd5.com/加密,较为麻烦,且容易出错

2. 编写python或java脚本,实现加密,比方法1高效

3. 在postman的Pre-request Script

 1 let app_secret = "xxx"; //签名app_secret
 2 let access_token = "xxx";
 3 let app_key = 'xxx';
 4 let method = 'xxx';
 5 let param_json ='{"thirdOrder":"xxx" ...}'; //参数省略
 6 let timestamp ='2018-06-06 13:52:03';  // 注意格式
 7 let v = '1.0';
 8 
 9 
10 //拼接
11 sign = app_secret +"access_token"+ access_token +"app_key"+app_key+"method"+method+"param_json"+param_json+"timestamp"+timestamp+"v"+v+app_secret;
12 console.log(sign);
13 sign = CryptoJS.MD5(sign).toString();
14 console.log(sign);
15 
16 //设置环境变量
17 postman.setEnvironmentVariable("sign", sign);

View Code

效率大大提高,推荐方法。

4. Jmeter处理方法:

   ——-4.1 编写java代码实现加密以及生成唯一订单号

   ——-4.2 将java代码打包后,拷贝到jmeter的lib/ext目录下

   ——-4.3 在测试计划中引入jar

   ——-4.4 添加BeanShell Sampler,编写脚本(类似java语法)

 1 // 导入外部jar包(计算sign)
 2 import com.wdzy.tools.GetSign;
 3 
 4 // 基本不变参数
 5 String app_secret = "xxx"; //签名app_secret
 6 String access_token = "xxx";
 7 String app_key = "xxx";
 8 String method = "xxx";
 9 String timestamp ="2018-06-06 13:52:03";
10 String v = "1.0";
11 
12 // 处理第三方订单号
13 String param_json = new GetSign().getParamJson();
14 String param_json = param_json.toString();
15 vars.put("param_json",param_json.toString());
16 
17 // 拼接sign串
18 sign = app_secret +"access_token"+ access_token +"app_key"+app_key+"method"+method+"param_json"+param_json+"timestamp"+timestamp+"v"+v+app_secret;
19 // 计算MD5值
20 String result = new GetSign().MD5(sign);
21 
22 System.out.println(result);
23 // 将sign结果存储到作用域
24 vars.put("sign",result.toString());

View Code

 

版权声明:本文为wdzy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wdzy/p/11313136.html