微信小程序请求请求封装,验签代码实例

  

这篇文章主要介绍了微信小程序请求请求封装,验签代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

<强> 1。公共文件util添加

  

请求请求      //简单封装请求   函数请求(params,路径,isShowLoading=true,返回=false, type='没有',obj={}) {   尝试{   console.log(路径)   让NowTime=日期。解析(新日期())/1000;   让defaultParams={   平台:app.globalData.platform,   appVersion: app.globalData.version,   的deviceId: uuId (),   时间戳:参数。时间戳& # 63;参数个数。时间戳:NowTime   };      params=对象。分配(params, defaultParams);   让requestParams=签名(params)   isShowLoading,,wx。showLoading,,wx.showLoading ({   标题:“加   中……”   })   返回新的承诺((解决,拒绝)=比;{   让头;   obj。头=obj。头| | {};   console.log(“获取ptkey”)   console.log(插件。getJdListStorage ([‘guid’,‘pt_key’,‘pt_token’, ' pt_pin ']))   让(GUID="、关键="牌=?销="]=插件。getJdListStorage ([‘guid’,‘pt_key’,‘pt_token’, ' pt_pin ']),   _cookie=' guid=$ {guid};pt_pin=$ {encodeURIComponent (PIN)};pt_key=${关键};pt_token=${牌},{wx.getStorageSync美元(“accessToken_v1”)}, {   饼干   }=obj.header;   console.log(饼干)   obj.header。=甜饼& # 63;“${饼干};$ {_cookie}’: _cookie;   如果(! isEmpty (getToken ())) {   obj.header。授权=俺制比恕? getToken ()   }   console.log (obj.header)      wx.request ({   .globalData url: getApp ()。主机+路径,//获取应用。js全局ip   数据:requestParams,   方法:“文章”,   标题:obj.header,   成功:函数(res) {   console.log (res)   isShowLoading,,wx。hideLoading,,wx.hideLoading ()//缺少登录失效的处理方法   如果(res.statusCode==200,,res.data。代码==200){   如果(isEmpty (res.data.data) | | res.data。数据=https://www.yisu.com/zixun/=true) {   解决(真正的)   返回   }   如果(res.data.data) {   解决(res.data.data);   如果(res.data}其他。https://www.yisu.com/zixun/=data=0) {   解决(res.data.data);   其他}{   解决(真正的)   }   }else if (res.statusCode==200,,res.data。代码==401){//令牌过期   登录();   解决(假);   返回;   其他}{//需要再判断码代码//errorShow (res.data。味精、返回类型);   errorShow (res.data.msg);   解决(假);//拒绝(res.data.res);   }   },   失败:函数(err) {   console.log (err)//因为隐藏会让showToast隐藏   isShowLoading,,wx。hideLoading,,wx.hideLoading ()   errorShow(“网络请求失败”);   拒绝(新的错误(“网络请求失败”))//把新的错误(“网络请求失败”)   },   完成:函数(){}   })   })   }捕捉(err) {   console.log (err)   errorShow(“网络请求失败”);   返回错误;   }   }      

<强> 2。签名签名

     //生成签名   函数签名(params) {   让keyArr=[]   (让关键参数){   keyArr.push(关键)   }   让arr=keyArr.sort ();   让结果=" ";   加勒比海盗。地图((项目、索引)=比;{   如果(params[项目]==null | | params[项目]==定义){   删除params[项目];   加勒比海盗。拼接(指数(1);   }   })   console.log(“加勒比海盗”)   console.log (arr)   加勒比海盗。地图((项目、索引)=比;{   如果(Array.isArray (params[项目])==true) {   让res="   让arr=params[项目]   加勒比海盗。地图(obj=比;{   console.log (typeof (obj))   如果(typeof (obj) !='对象'){   res +=obj   其他}{   (让关键在obj) {   如果(Array.isArray (obj(例子))){   让val=";   obj(关键)。地图(项=比;{   val +=项目   })   res +=+瓦尔的关键   其他}{   res +=键+ obj(例子)   }   }   }   })   结果+=" +项目+ " + res   其他}{   结果+=" +项目+ " + params[项目]   }   })   console.log(“结果”)   console.log(结果)      让pos;   如果(isEmpty (getToken ())) {   pos=结果   其他}{   pos=结果+ getToken ()   }   console.log (pos)   console.log(“签名”)   让签名=sha256.hmac.create (pos_secret) .update (pos) .hex () .toLowerCase ();//需要引入sha256.min.js   console.log(签名)   让obj={   签名:签名   }   返回对象。分配(params, obj);   }

微信小程序请求请求封装,验签代码实例