123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- const 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('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
- }
- const formatNumber = n => {
- n = n.toString()
- return n[1] ? n : '0' + n
- }
- const getTypeSn = url => {
- let type_sn = ''
- if (url.indexOf('type_sn') != -1 && url.indexOf('bonusex') != -1) {
- let arr = url.split('&')
- arr.some(item => {
- if (item.indexOf('type_sn') != -1) {
- type_sn = item.split('=')[1]
- return true
- }
- })
- }
- return type_sn
- }
- function getUrlPrefixAndParams(url) {
- // 用JS拿到URL,如果函数接收了URL,那就用函数的参数。如果没传参,就使用当前页面的URL
- let params = url.split('?');
- let prefix = params[0];
- if(params.length < 2) {
- return [prefix, {}];
- }
-
- var queryString = params[1];
- // 用来存储我们所有的参数
- var obj = {};
- // 如果没有传参,返回一个空对象
- if (!queryString) {
- return obj;
- }
- // stuff after # is not part of query string, so get rid of it
- queryString = queryString.split('#')[0];
- // 将参数分成数组
- var arr = queryString.split('&');
- for (var i = 0; i < arr.length; i++) {
- // 分离成key:value的形式
- var a = arr[i].split('=');
- // 将undefined标记为true
- var paramName = a[0];
- var paramValue = typeof (a[1]) === 'undefined' ? true : a[1];
- // 如果调用对象时要求大小写区分,可删除这两行代码
- paramName = paramName.toLowerCase();
- if (typeof paramValue === 'string') paramValue = paramValue.toLowerCase();
- // 如果paramName以方括号结束, e.g. colors[] or colors[2]
- if (paramName.match(/\[(\d+)?\]$/)) {
- // 如果paramName不存在,则创建key
- var key = paramName.replace(/\[(\d+)?\]/, '');
- if (!obj[key]) obj[key] = [];
- // 如果是索引数组 e.g. colors[2]
- if (paramName.match(/\[\d+\]$/)) {
- // 获取索引值并在对应的位置添加值
- var index = /\[(\d+)\]/.exec(paramName)[1];
- obj[key][index] = paramValue;
- } else {
- // 如果是其它的类型,也放到数组中
- obj[key].push(paramValue);
- }
- } else {
- // 处理字符串类型
- if (!obj[paramName]) {
- // 如果如果paramName不存在,则创建对象的属性
- obj[paramName] = paramValue;
- } else if (obj[paramName] && typeof obj[paramName] === 'string') {
- // 如果属性存在,并且是个字符串,那么就转换为数组
- obj[paramName] = [obj[paramName]];
- obj[paramName].push(paramValue);
- } else {
- // 如果是其它的类型,还是往数组里丢
- obj[paramName].push(paramValue);
- }
- }
- }
- return [prefix,obj];
- }
- var RSA = require('./wx_rsa.js')
- function strsign(str) {
- var privateKey = `-----BEGIN RSA PRIVATE KEY-----
- MIICXAIBAAKBgQC/iOf91VYX6XN05rFI7sHPJq2cnGr47hODFfWfhFw7z8ueTwGI
- w7ynzLUTArCWIDuEdH8sm9Tob4Jcl1CixWo8ToVJv+CtoZyNRP/vMz22NAlOTrK+
- AvbMVh7WOuroE8fjuFt3uAsWE3x5/guhLomCdg1iYoPjm6YXfAjxWBcy8QIDAQAB
- AoGAPqIPcxMrVyBxL/4sZTQmTo5QYZFI7eQ0nz40FxjabHi0Fi2xy75uV9T6NaBA
- jKc3r0XFPJos0mF8mLimlsPFzCe/wgugPH0gXZVHixH034rLqxJ83lLGpdiv5/lg
- ABY/k1J3J6mLRKggk/vXOI1ZH4pOxTcY23IqPadu0Cg82MECQQDpVrOfd5Jwcrkh
- TlZyIqYYSpWcvujFMarsYT/tzZV1Wkwhx2wZfMbd3y6i5q1z1B7wLd/cCfHwLyw7
- jVEID9oJAkEA0iLe22YtoZs6n1yva6lcideqNB8KmvGej2IaHUkrH+tYd/sMXRKQ
- xcSFfSZz1gT4QsXF/ndVXXci2WnF2yrrqQJAacBXrCA/CCOWb9fXKec2K7Ax2lZT
- nHuEIZl5pccUw5jnBDAjd/GrF4c81auCVQp/8w53dHw1YEug2mSTovm8MQJACYNo
- oXgrwrA7ZDGXA4HEXb00yG1LVp5vtkATvJWubSCDfdMQyTno8fsmq/bMsbjB4IwB
- nbabV8LoAf3G5lg4GQJBAIkaDL+qe1ijVN+JGaqb1zCITeoVIoarlRWQye8Iga9b
- Qi8P5Ft7oXIglYjOvBYC0rbnn037LIK/fqB1cP6OBow=
- -----END RSA PRIVATE KEY-----`
- var sign_rsa = RSA.KEYUTIL.getKey(privateKey);
- console.log(sign_rsa)
- var hashAlg = 'sha1';
- let sig = sign_rsa.signString(str, hashAlg);
- sig = RSA.hex2b64(sig); // hex 转 b64
- return sig;
- }
- function isEmpty(val) {
- if(val == '') {
- return true;
- }
-
- if(val == null) {
- return true;
- }
- if(val == undefined) {
- return true;
- }
-
- return false;
- }
- function arrsign(map) {
- let keys = new Array()
- for (let key of Object.keys(map)) {
- keys.push(key)
- }
- keys.sort();
- let content = ''
- let i = 0;
- keys.forEach(key => {
- let val = map[key];
- val = '' + val
- if (false === isEmpty(val) && "@" != val.substr(0, 1)) {
- if (i == 0) {
- content += '' + key + "=" + encodeURI(val);
- } else {
- content += "&" + key + "=" + encodeURI(val);
- }
- i++;
- }
- });
- console.log('content:', content);
- return strsign(content);
- }
- module.exports = {
- getTypeSn: getTypeSn,
- formatTime: formatTime,
- parseAppjump: getUrlPrefixAndParams,
- strsign: strsign,
- arrsign: arrsign
- }
|