使用postman对请求自动加签名 拿来即用
·
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;
}
更多推荐
所有评论(0)