1/ 公共文件util添加

request请求

//简单封装请求
function request(params, path, isShowLoading = true, goBack = false, type = 'none', obj={}) {
try {
console.log(path)
let NowTime = Date.parse(new Date()) / ;
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 == && res.data.code == ) {
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 == ){
resolve(res.data.data);
} else {
resolve('true')
}
} else if (res.statusCode == && res.data.code == ) { //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(new Error('Network request failed'))
// throw new Error('Network request failed')
},
complete: function() {}
})
})
} catch (err) {
console.log(err)
errorShow('网络请求失败');
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, );
}
})
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);
}

3/  util文件引入

const app = getApp()
const sha256 = require('../libs/sha256.min.js');

微信小程序request请求封装,验签的更多相关文章

  1. 微信小程序 request请求封装

    在utils文件夹新建文件utils.js,封装代码如下: 小程序升级后内部不自带Promise方法,需外部引入Promise方法   var sendRequest = function (url, ...

  2. 微信小程序request请求封装

    var app = getApp(); function request(url,postData,doSuccess,doFail,doComplete){ var host = getApp(). ...

  3. mpvue学习笔记-之微信小程序数据请求封装

    简介 美团出品的mpvue已经开源出来很久了,一直说要进行一次实践,这不最近一次个人小程序开发就用上了它. 看了微信官方的数据请求模块--request,对比了下get和post请求的代码,发现如果在 ...

  4. 微信小程序request请求的封装

    目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...

  5. 微信小程序request请求之GET跟POST的区别

    1.GET 例子: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content ...

  6. 微信小程序request请求动态获取数据

    微信小程序开发文档链接 1 后台代码: clickButton:function(){ var that = this; wx.request({ url: 'http://localhost:909 ...

  7. 微信小程序request请求实例,网络请求。

    最近微信小程序开始开放测试了,小程序提供了很多api,极大的方便了开发者,其中网络请求api是wx.request(object),这是小程序与开发者的服务器实现数据交互的一个很重要的api. 官方参 ...

  8. 微信小程序request(ajax)接口请求封装

    微信小程序request(ajax)接口请求封装 最近在进行小程序的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,在封装的时 ...

  9. 微信小程序数据请求方法wx.request小测试

    微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </vi ...

随机推荐

  1. vue 中 弹幕的播放

    前言 最近在搞弹幕的问题,小程序上的和vue上的,不想使用插件,于是自己摸索了一下,其实包括 2中弹幕形式 有序和无序的 直接上代码吧 <!-- 弹幕 --> <template v ...

  2. Bash快捷操作

    编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词前移(右向) Al ...

  3. 【LuoguP5328】[ZJOI2019]浙江省选

    题目链接 题意 给你一堆斜率和纵截距都为正的直线 ,求对于一个条直线是否存在一个 x 使得在这条直线在 x 处能是前 m 大,输出最高能够达到的排名(排名定义为在 x 处严格大于自己的直线条数+1) ...

  4. matplotlib动画

    注意:要有动画效果,必须独立窗口:独立窗口的设置方法:https://www.cnblogs.com/liming19680104/p/10614070.html import matplotlib. ...

  5. 【leetcode】1261. Find Elements in a Contaminated Binary Tree

    题目如下: Given a binary tree with the following rules: root.val == 0 If treeNode.val == x and treeNode. ...

  6. jquery disabled选择器 语法

    jquery disabled选择器 语法 作用:disabled 选择器选取所有禁用的表单元素.大理石平台价格表 语法:$(":disabled") jquery disable ...

  7. TTTTTTTTTTTTTTTTT POJ 2226 草地覆木板 二分匹配 建图

    Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9754   Accepted: 3618 Desc ...

  8. sublime text 3插件---File Header配置

    今天趁着有点闲工夫,准备好好配置一下sublime环境,毕竟天天见面. 首当其冲的就是FileHeader插件了,安装它之后就懒得配置过.(方便起见,以下简称FH) FH是一个为文件自动添加前缀字段的 ...

  9. [pytorch笔记] 调整网络学习率

    1. 为网络的不同部分指定不同的学习率 class LeNet(t.nn.Module): def __init__(self): super(LeNet, self).__init__() self ...

  10. CentOS6.5卸载自带的Mysql软件

    现想要在这家的服务器上安装Mysql集群,发现之前安装操作系统的时候顺便把MySql默认安装,所以需要将它先卸载掉. 1,查找已安装的mysql版本 [root@leader ~]# rpm -qa| ...