You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
let sha1 = require("./sha1.min.js");let SparkMD5 = require("./SparkMD5.js"); // 签名加密js文件
function getsign(params) { let s_data = ""; let keys = []; for (const key in params) { if (params.hasOwnProperty(key)) { const value = params[key]; keys.push(key); } } let arr = []; keys.sort(); for (let i = 0; i < keys.length; i++) { let k = keys[i]; let v = params[k]; arr.push(k + '=' + v); } s_data = arr.join('&'); //测试
// let sign = sha1(SparkMD5.hash(s_data) + 'lanzu@123');
//正式
let sign = sha1(SparkMD5.hash(s_data) + 'base64:8oVqQuUYKI+Fg2iPP1VZwqTbMvpphc/oqhU5+Hzul+4='); params.sign = sign; return params;}
function $http(url, data = {}, options = {}){ return new Promise((resolve, reject) => { // 绑定this
let that = this; // 获取当前请求来自哪个页面
let pages = getCurrentPages(); data.create_page = pages[pages.length - 1].route; // 当前请求时间戳
if (!data.timestamp) { data.timestamp = Math.round(new Date().getTime() / 1000); } // 当前请求随机数
if(!data.rand){ data.rand = Math.round(Math.random() * 1000000); } // 当前请求来自的平台
data.platform = 'wxmini'; // #ifdef APP-PLUS
data.platform = 'app'; // 来自app平台,其他平台写法类似
// #endif
// 当前小程序版本号
data.version = that.API.VERSION; // 获取设备唯一deviceId,如果没有,自动生成一个
let sysInfo = uni.getSystemInfoSync(); if(typeof sysInfo.deviceId == 'undefined'){ let deviceId = uni.getStorageSync('deviceId'); if(deviceId){ sysInfo.deviceId = deviceId; }else{ let date_time = String(new Date().getTime()); let md5_deviceId = SparkMD5.hash(date_time); uni.setStorageSync('deviceId', md5_deviceId); sysInfo.deviceId = md5_deviceId; } } if (sysInfo) { data.device_info = JSON.stringify(sysInfo); } // 判断传入用户token和id
let userinfo = uni.getStorageSync('userinfo') || {}; if(userinfo && userinfo.token && !data.token){ data.token = userinfo.token; } if(userinfo && userinfo.id && !data.user_id){ data.user_id = userinfo.id; } // 获取页面options参数
let _mergeParam = that._mergeParam; for (let _keyVar in _mergeParam) { let _k = _keyVar if (data[_k]) { _k = '_' + _k; } data[_k] = _mergeParam[_keyVar]; } // 生成sign
getsign(data); console.log(url, data); // 动态赋值是否显示loading加载框 TODO验证一下是否有问题
if(that.$shared.isValueType(options.showLoading) != 'undefined'){ that.$u.http.setConfig({showLoading: options.showLoading}); } // 发起请求
that.$u.post(url, data).then(res => { resolve(res); }).catch(err => { reject(err); }) });}
module.exports = { $http}
|