微信小程序request请求封装,验签代码实例
这篇文章主要介绍了微信小程序request请求封装,验签代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.公共文件util添加
request请求
//简单封装请求 functionrequest(params,path,isShowLoading=true,goBack=false,type='none',obj={}){ try{ console.log(path) letNowTime=Date.parse(newDate())/1000; letdefaultParams={ platform:app.globalData.platform, appVersion:app.globalData.version, deviceId:uuId(), timestamp:params.timestamp?params.timestamp:NowTime }; params=Object.assign(params,defaultParams); letrequestParams=signature(params) isShowLoading&&wx.showLoading&&wx.showLoading({ title:'加 中...' }) returnnewPromise((resolve,reject)=>{ letheader; obj.header=obj.header||{}; console.log('获取ptkey') console.log(plugin.getJdListStorage(['guid','pt_key','pt_token','pt_pin'])) let[GUID='',KEY='',TOKEN='',PIN='']=plugin.getJdListStorage(['guid','pt_key','pt_token','pt_pin']), _cookie=`guid=${GUID};pt_pin=${encodeURIComponent(PIN)};pt_key=${KEY};pt_token=${TOKEN};${wx.getStorageSync("accessToken_v1")}`,{ cookie }=obj.header; console.log(cookie) obj.header.cookie=cookie?`${cookie};${_cookie}`:_cookie; if(!isEmpty(getToken())){ obj.header.authorization='Bearer'+getToken() } console.log(obj.header) wx.request({ url:getApp().globalData.host+path,//获取app.js全局ip data:requestParams, method:'POST', header:obj.header, success:function(res){ console.log(res) isShowLoading&&wx.hideLoading&&wx.hideLoading() //缺少登录失效的处理方法 if(res.statusCode==200&&res.data.code==200){ if(isEmpty(res.data.data)||res.data.data==true){ resolve('true') return } if(res.data.data){ resolve(res.data.data); }elseif(res.data.data==0){ resolve(res.data.data); }else{ resolve('true') } }elseif(res.statusCode==200&&res.data.code==401){//token过期 Login(); resolve(false); return; }else{ //需要再判断code码 //errorShow(res.data.msg,goBack,type); errorShow(res.data.msg); resolve(false); //reject(res.data.res); } }, fail:function(err){ console.log(err) //因为hide会让showToast隐藏 isShowLoading&&wx.hideLoading&&wx.hideLoading() errorShow('网络请求失败'); reject(newError('Networkrequestfailed')) //thrownewError('Networkrequestfailed') }, complete:function(){} }) }) }catch(err){ console.log(err) errorShow('网络请求失败'); returnfalse; } }
2.signature签名
//生成签名 functionsignature(params){ letkeyArr=[] for(letkeyinparams){ keyArr.push(key) } letarr=keyArr.sort(); letresult=""; arr.map((item,index)=>{ if(params[item]==null||params[item]==undefined){ deleteparams[item]; arr.splice(index,1); } }) console.log("arr") console.log(arr) arr.map((item,index)=>{ if(Array.isArray(params[item])==true){ letres='' letarr=params[item] arr.map(obj=>{ console.log(typeof(obj)) if(typeof(obj)!='object'){ res+=obj }else{ for(letkeyinobj){ if(Array.isArray(obj[key])){ letval=''; obj[key].map(item=>{ val+=item }) res+=key+val }else{ res+=key+obj[key] } } } }) result+=''+item+''+res }else{ result+=''+item+''+params[item] } }) console.log("result") console.log(result) letpos; if(isEmpty(getToken())){ pos=result }else{ pos=result+getToken() } console.log(pos) console.log("signature") letsignature=sha256.hmac.create('pos_secret').update(pos).hex().toLowerCase();//需要引入sha256.min.js console.log(signature) letobj={ 'signature':signature } returnObject.assign(params,obj); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。