PostMan 自动加签 拿来即用

对post 请求中参数进行排序加签,再赋值给参数sign

一、当参数是 格式时:

 

1、打开 Pre-request Script 窗口,写入代码

 

2、post请求参数配置

3、代码如下

let param = request.data;   //post 参数

//排序
param  = objSort(param);

var paramStr = "";
var flag = false;
var time = (new Date()).getTime().toString();
for (let i in param) { 
    if(param[i].key == "sign"){
        //一定要加,否则会无限循环
        continue;
    }
    if(param[i].key == "requestTimestamp"){
        param[i].value = time;
    }
    if(flag){
        paramStr = paramStr +"&" + param[i].key + "=" + param[i].value;
    }else{
        paramStr = paramStr + param[i].key + "=" + param[i].value;
    }
    flag = true;
}


//json,然后生成签名
let str1 = paramStr+"yourkey";  
postman.setGlobalVariable("sign", CryptoJS.SHA256(str1).toString());
postman.setGlobalVariable("requestTimestamp", time);
//排序方法
function objSort(obj)
{
    let keys = Object.keys(obj).sort();
    let arr = {};
    for (let i in keys) {
        arr[keys[i]] = obj[keys[i]];
    }
    return arr;
}

postman新版本代码:

var moment = require('moment');
date =  moment().format("YYYY-MM-DD HH:mm:ss");
let param = request.data;   //post 参数
//排序
param  = objSort(param);
var paramStr = "";
var flag = false;
var time = date;
for (let p in param) { 
    if(p == "sign"){
        //一定要加,否则会无限循环
        continue;
    }
    if(p == "requestTimestamp"){
      param[p] = date;
    }
 
    if(flag){
        paramStr = paramStr +"&" + p + "=" + param[p];
    }else{
        paramStr = paramStr + p + "=" + param[p];
    }
    flag = true;
}

//json,然后生成签名
let str1 = paramStr+"yourkey"; 

console.log(str1)

postman.setGlobalVariable("sign", CryptoJS.SHA256(str1).toString());

postman.setGlobalVariable("time", time);
//排序方法
function objSort(obj)
{
    let keys = Object.keys(obj).sort();
    let arr = {};
    for (let i in keys) {
        arr[keys[i]] = obj[keys[i]];
    }
    return arr;
}

二、当request body  参数是raw时

{

    "merOrderId": "12312",

    "requestTimestamp": "{{requestTimestamp}}",

    "signType": "SHA256",

    "tid": "12312",

    "sign": "{{sign}}"

}

2、代码如下:

var body_list = JSON.parse(pm.request.body); //传递参数的形式: x-www-form-urlencoded 方式,还有常见的form-data、raw  ,根据不同的传参形式改变方法pm.request.body.fromdata / pm.request.body.raw
var paramObj = {};
//获取数组预备给key排序
for(var key in body_list) {
    paramObj[key] = body_list[key];
}
//排序
var param = objSort(paramObj);
var paramStr = "";
var flag = false;
var moment = require('moment');
var date =  moment().format("YYYY-MM-DD HH:mm:ss");
for (let p in param) { 
    if(p == "sign"){
        //一定要加,否则会无限循环
        continue;
    }
    if(p == "requestTimestamp"){
      param[p] = date;
    }

    if(flag){
        paramStr = paramStr +"&" + p + "=" + param[p];
    }else{
        paramStr = paramStr + p + "=" + param[p];
    }
    flag = true;
}
console.log(paramStr)

//json,然后生成签名
let str1 = paramStr+"yourkey"; 
postman.setGlobalVariable("sign", CryptoJS.SHA256(str1).toString());
postman.setGlobalVariable("requestTimestamp",date);


//排序方法
function objSort(obj)
{
    let keys = Object.keys(obj).sort();
    let arr = {};
    for (let i in keys) {
        arr[keys[i]] = obj[keys[i]];
    }
    return arr;
}

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐