aliservice/think-apisign

There is no license information available for the latest version (1.0.0) of this package.

1.0.0 2023-01-29 03:14 UTC

This package is auto-updated.

Last update: 2024-04-29 05:00:08 UTC


README

Postman


const salt = 'default'

function randomString(len) {
  len = len || 32;
  var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
  var maxPos = $chars.length;
  var pwd = '';
  for (i = 0; i < len; i++) {
    pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
  }
  return pwd;
}

function ksort(o){
    let sorted = {}
    let keys = Object.keys(o)
    keys.sort()
    keys.forEach((key)=>{
        if(typeof o[key] != 'object' && o[key] && o[key] !== '0'){
            sorted[key] =  o[key]
        }
    })
    return sorted
}

function makeSign(request_data,timestamp,randStr){
    data = ksort(request_data)
    let string = ""
    Object.keys(data).forEach((key)=>{
        string += key + '=' + data[key] + '&'
    })
    string += salt + timestamp + randStr
    return CryptoJS.MD5(string).toString().toLocaleUpperCase()
}

let request_data = pm.request.method.toLocaleUpperCase() === 'POST' ? JSON.parse(pm.request.body.raw) : pm.request.url.query.toObject()

const timestamp = Date.parse(new Date()).toString().substring(0,10)
const randStr = randomString(10)
const sign = makeSign(request_data,timestamp,randStr);
pm.request.headers.upsert({key:"timestamp",value:timestamp})
pm.request.headers.upsert({key:"randStr",value:randStr})
pm.request.headers.upsert({key:"sign",value:sign})