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; }