import { ksort } from "../util/ksort.js"; import { md5 } from "../util/md5.js"; import { sha1 } from "../util/sha1.js"; const _signCode = "etc123456"; //签名码 function pad2(n) { return n < 10 ? "0" + n : n; } //获取时间ymdHis function getDate() { var date = new Date(); return ( date.getFullYear().toString() + pad2(date.getMonth() + 1) + pad2(date.getDate()) + pad2(date.getHours()) + pad2(date.getMinutes()) + pad2(date.getSeconds()) ); } /** * 获取随机数 */ function generateMixed(n) { var chars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; var res = ""; for (var i = 0; i < n; i++) { var id = Math.ceil(Math.random() * 8); res += chars[id]; } return res; } //签名 function sign(data, signCode) { data = ksort(data); var signStr = ""; var requestId = false; for (let k in data) { if (k != "sign") { if (k == "requestId") { requestId = data[k]; } signStr += k + "=" + data[k] + "&"; } } signStr += "signCode=" + signCode; // console.log("signStr*************"+signStr); if (!requestId) { return false; } signStr = md5(signStr); signStr = signStr.toUpperCase(); // console.log('MD5**************' + signStr); signStr += requestId; // console.log('requestId**************' + signStr); signStr = sha1(signStr); signStr = signStr.toUpperCase(); // console.log('SHA1**************' + signStr); return signStr; } //arrayToJsonString array 转json字符串 export function arrayToJsonString(array) { var json = {}; for (var i in array) { if (array[i] instanceof Array) { json[i] = {}; for (var o in array[i]) { if (array[i][o] instanceof Array) { json[i][o] = {}; for (var q in array[i][o]) { if (array[i][o][q] instanceof Array) { json[i][o][q] = {}; for (var w in array[i][o][q]) { json[i][o][q][w] = array[i][o][q][w]; } } else { json[i][o][q] = array[i][o][q]; } } } else { json[i][o] = array[i][o]; } } } else { json[i] = array[i]; } } return JSON.stringify(json); } /** *json字符串转换成json对象 */ export function stringToJson(data) { return JSON.parse(data); } //array转json对象 export function arrayToJson(array) { return stringToJson(arrayToJsonString(array)); } //时间格式化 export function formatTime(date) { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes(); const second = date.getSeconds(); return `${[year, month, day].map(formatNumber).join("-")}T${[ hour, minute, second, ] .map(formatNumber) .join(":")}`; } function formatNumber(n) { n = n.toString(); return n[1] ? n : `0${n}`; } //调用中台参数 export function encryption(urlcode, subdata, type) { // console.log('输出内容',stringToJson(JSON.stringify(subdata))) var requestData = new Array(); requestData["IFCODE"] = urlcode; requestData["AppId"] = "admin001"; requestData["encryptType"] = "NONE"; requestData["signType"] = "MD5"; requestData["ReqId"] = requestData["AppId"] + "_" + getDate() + "_" + generateMixed(5); requestData["timestamp"] = formatTime(new Date()); //更据type判断是否转字符串 if (type === 2) { requestData["bizContent"] = JSON.stringify(subdata); } else { requestData["bizContent"] = subdata; } console.log( "bizContent=" + requestData["bizContent"] + "&signType=MD5&encryptType=NONE×tamp=" + requestData["timestamp"] + "&IFCODE=" + urlcode ); requestData["sign"] = md5( "bizContent=" + requestData["bizContent"] + "&signType=MD5&encryptType=NONE×tamp=" + requestData["timestamp"] + "&IFCODE=" + urlcode ); let endData = arrayToJson(requestData); console.log("输出内容", endData); return endData; }