最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序request請(qǐng)求封裝,驗(yàn)簽代碼實(shí)例

 更新時(shí)間:2019年12月04日 14:23:06   作者:shuihanxiao  
這篇文章主要介紹了微信小程序request請(qǐng)求封裝,驗(yàn)簽代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了微信小程序request請(qǐng)求封裝,驗(yàn)簽代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1.公共文件util添加

request請(qǐng)求

//簡(jiǎn)單封裝請(qǐng)求
function request(params, path, isShowLoading = true, goBack = false, type = 'none', obj={}) {
 try {
  console.log(path)
  let NowTime = Date.parse(new Date()) / 1000;
  let defaultParams = {
   platform: app.globalData.platform,
   appVersion: app.globalData.version,
   deviceId: uuId(),
   timestamp: params.timestamp ? params.timestamp : NowTime
  };
 
  params = Object.assign(params, defaultParams);
  let requestParams = signature(params)
  isShowLoading && wx.showLoading && wx.showLoading({
   title: '加
中...'
  })
  return new Promise((resolve, reject) => {
   let header;
   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);
      } else if (res.data.data == 0){
       resolve(res.data.data);
      } else {
       resolve('true')
      }
     } else if (res.statusCode == 200 && res.data.code == 401) { //token過(guò)期
      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)
     // 因?yàn)閔ide會(huì)讓showToast隱藏
     isShowLoading && wx.hideLoading && wx.hideLoading()
     errorShow('網(wǎng)絡(luò)請(qǐng)求失敗');
     reject(new Error('Network request failed'))
     // throw new Error('Network request failed')
    },
    complete: function() {}
   })
  })
 } catch (err) {
  console.log(err)
  errorShow('網(wǎng)絡(luò)請(qǐng)求失敗');
  return false;
 }
}

2.signature 簽名

//生成簽名
function signature(params) {
 let keyArr = []
 for (let key in params) {
  keyArr.push(key)
 }
 let arr = keyArr.sort();
 let result = "";
 arr.map((item, index) => {
  if (params[item] == null || params[item] == undefined) {
   delete params[item];
   arr.splice(index, 1);
  }
 })
 console.log("arr")
 console.log(arr)
 arr.map((item, index) => {
  if (Array.isArray(params[item]) == true) {
   let res = ''
   let arr = params[item]
   arr.map(obj => {
    console.log(typeof(obj))
    if (typeof(obj) != 'object') {
     res += obj
    } else {
     for (let key in obj) {
      if (Array.isArray(obj[key])) {
       let val = '';
       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)

 let pos;
 if (isEmpty(getToken())) {
  pos = result
 } else {
  pos = result + getToken()
 }
 console.log(pos)
 console.log("signature")
 let signature = sha256.hmac.create('pos_secret').update(pos).hex().toLowerCase(); //需要引入sha256.min.js
 console.log(signature)
 let obj = {
  'signature': signature
 }
 return Object.assign(params, obj);
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序 多行文本顯示...+顯示更多按鈕和收起更多按鈕功能

    微信小程序 多行文本顯示...+顯示更多按鈕和收起更多按鈕功能

    這篇文章主要介紹了微信小程序多行文本顯示...+顯示更多按鈕和收起更多按鈕,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • js實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到頁(yè)面底部繼續(xù)加載

    js實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到頁(yè)面底部繼續(xù)加載

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到頁(yè)面底部繼續(xù)加載,原理很簡(jiǎn)單,就是為window添加一個(gè)scroll事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • layui字體圖標(biāo) loading圖標(biāo)靜止不旋轉(zhuǎn)的解決方法

    layui字體圖標(biāo) loading圖標(biāo)靜止不旋轉(zhuǎn)的解決方法

    今天小編就為大家分享一篇layui字體圖標(biāo) loading圖標(biāo)靜止不旋轉(zhuǎn)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • javascript獲取web應(yīng)用根目錄的方法

    javascript獲取web應(yīng)用根目錄的方法

    這篇文章主要介紹了javascript獲取web應(yīng)用根目錄的方法,需要的朋友可以參考下
    2014-02-02
  • 三種方式實(shí)現(xiàn)瀑布流布局

    三種方式實(shí)現(xiàn)瀑布流布局

    本文主要介紹了分別使用javascript,jquery,css實(shí)現(xiàn)瀑布流布局的方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • JavaScript錯(cuò)誤處理之分析 Uncaught(in promise) error的原因及解決方案

    JavaScript錯(cuò)誤處理之分析 Uncaught(in promise) error的

    在開(kāi)發(fā)過(guò)程中,JavaScript的錯(cuò)誤處理是一個(gè)老生常談的話(huà)題,當(dāng)應(yīng)用程序發(fā)生未捕獲的異常時(shí),Uncaught(in promise) error是其中最常見(jiàn)的錯(cuò)誤類(lèi)型,這篇文章將從多個(gè)方面詳細(xì)闡述這種錯(cuò)誤類(lèi)型的原因與解決方案,感興趣的朋友一起看看吧
    2023-12-12
  • JavaScript通過(guò)改變文字透明度實(shí)現(xiàn)的文字閃爍效果實(shí)例

    JavaScript通過(guò)改變文字透明度實(shí)現(xiàn)的文字閃爍效果實(shí)例

    這篇文章主要介紹了JavaScript通過(guò)改變文字透明度實(shí)現(xiàn)的文字閃爍效果,結(jié)合完整實(shí)例形式分析了javascript基于定時(shí)器周期性動(dòng)態(tài)修改頁(yè)面元素屬性的相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • layer 關(guān)閉指定彈出層的例子

    layer 關(guān)閉指定彈出層的例子

    今天小編就為大家分享一篇layer 關(guān)閉指定彈出層的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • 最新評(píng)論

    射洪县| 奎屯市| 南汇区| 襄汾县| 哈巴河县| 北辰区| 德保县| 高青县| 道真| 河源市| 和政县| 安溪县| 西青区| 南昌县| 松潘县| 蒙阴县| 精河县| 肃北| 江门市| 绵阳市| 布拖县| 延庆县| 佛学| 南开区| 陇川县| 南宫市| 邯郸市| 门头沟区| 水富县| 聂拉木县| 江津市| 郴州市| 郯城县| 逊克县| 黄山市| 龙游县| 铁岭市| 杂多县| 隆德县| 东乡| 阳春市|