uniapp封装md5请求加密
要求:要封装一个md5加密的请求头,加密部分:url 问号后面部分和data参数。
签名步骤:
1、 按照参数首字母进行排序, 并拼接为字符串, 并用&链接
2、追加密钥&key=xxxxxxx
到字符串(具体加密密钥
每个项目不同)
3、把得到的字符串进行md5加密,并转大写
4、把计算得到的签名追加到 GET
或POST
请求中即可: sign=签名结果
前端封装步骤:
首先建一个common文件夹然后在里面建一个network.js文件。目录结构是这样:
封装的内容写在network.js里面。
1.要用到md5加密,要先下载一个md5.js。我这里没有下载,用了uView框架里面的md5,那么先把它引进来:
import md5Libs from "../uview-ui/libs/function/md5.js";
2.把data对象转换成数组,这里用 entries
let result = Object.entries(date); //data参数对象转数组
console.log(result);
3.再把数组用&拼接成字符串(这里要做判断,判断数组里是否包含多个元素,若是,则要用+=,否则直接用=)
let dateStr = ""for(var i=0;i<result.length;i++){console.log(result[i]);if(result.length>1){dateStr += "&" + result[i][0] +"="+result[i][1];}else{dateStr = "&" + result[i][0] +"="+result[i][1]}}
4.然后再看url里面的(url里是否包含"?",若包含则截取下来)
截取下来后再与data里的参数按首字母排序,再拼接。
最后md5计算,转大写。
let urlStr = url;let md5Str = "";let key = "1^)(^*^$$#$%!@#$!@#$%";let sign = "";if(urlStr.indexOf("?")!=-1){ //url参数截取let index = urlStr.lastIndexOf("\?");urlStr = urlStr.substring(index+1,urlStr.length);console.log(urlStr);md5Str = urlStr+dateStr; //url参数和data字符串相加拼接console.log(md5Str);if(md5Str.indexOf("&")!=-1){md5Str= md5Str.split("&"); //分割成数组排序md5Str = md5Str.sort();md5Str = md5Str.join("&");//拼接成字符串用&连接console.log(md5Str);md5Str = md5Str+"&key="+key;sign= md5Libs.md5(md5Str).toUpperCase();}else{md5Str = md5Str+"&key="+key;sign= md5Libs.md5(md5Str).toUpperCase();}} console.log("sign="+sign);
完整代码为:
import md5Libs from "../uview-ui/libs/function/md5.js";
const baseUrl = '';//url域名这里省略let Token = uni.getStorageSync("Token")?uni.getStorageSync("Token") :"";
const request = (url = '', date = {}, type = 'POST', header = {
}) => {return new Promise((resolve, reject) => {let result = Object.entries(date); //data参数对象转数组console.log(result);let dateStr = ""for(var i=0;i<result.length;i++){console.log(result[i]);if(result.length>1){dateStr += "&" + result[i][0] +"="+result[i][1];}else{dateStr = "&" + result[i][0] +"="+result[i][1]}}let urlStr = url;let md5Str = "";let key = "1^)(^*^$$#$%!@#$!@#$%";let sign = "";if(urlStr.indexOf("?")!=-1){ //url参数截取let index = urlStr.lastIndexOf("\?");urlStr = urlStr.substring(index+1,urlStr.length);console.log(urlStr);md5Str = urlStr+dateStr; //url参数和data字符串相加拼接console.log(md5Str);if(md5Str.indexOf("&")!=-1){md5Str= md5Str.split("&"); //分割成数组排序md5Str = md5Str.sort();md5Str = md5Str.join("&");//拼接成字符串用&连接console.log(md5Str);md5Str = md5Str+"&key=1^)(^*^$$#$%!@#$!@#$%";sign= md5Libs.md5(md5Str).toUpperCase();}else{md5Str = md5Str+"&key=1^)(^*^$$#$%!@#$!@#$%";sign= md5Libs.md5(md5Str).toUpperCase();}} console.log("sign="+sign);uni.request({method: type,url: baseUrl + url + '&sign='+sign,data: date,header: {"Token":Token},dataType: 'json', }).then((response) => {setTimeout(function() {uni.hideLoading();}, 200);let [error, res] = response; resolve(res.data);}).catch(error => {let [err, res] = error;reject(err)})});
}export default request;
效果为:
然后微信支付这里有个可以测试的 测试加密是否正确
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=20_1
把参数填进去,生成的sign一样就说明正确
uniapp封装md5请求加密相关推荐
- uniapp 封装网络请求
文章目录 一.前端 1. 封装网络请求 2. 封装模块请求方法 二.后端 2.1. 返回对象 2.2. 热搜接口 三.微信模拟请求 3.1. Network 3.2. Console 一.前端 1. ...
- 前端:uniapp封装网络请求笔记
uniapp作为开发移动端的前端框架,目前国内是非常流行的,使用HbuilderX开发工具基于uniapp框架开发的系统可以方便的转换为小程序.APP等移动端程序,大大降低了移动开发的成本.网络请求更 ...
- uniapp封装网络请求_八张图带你走进“通过一个完美请求封装一个网络模块”
本文提供视频课程讲解,需要的小伙伴可以点赞+私信''网络模块''前往领取 学习大纲 1.网络模块在应用中的地位 1.1当今占统治地位的网络组件 OKHttp OkHttp 是一个相对成熟的解决方案,据 ...
- uniapp封装ajax请求
module.exports = { config: function (name) { var info = null; if (name) { var name2 = name.split(&qu ...
- Uni-app 实现md5加密
写下这篇文章,记录自己走过的坑 第一次尝试:参照博客uniapp使用md5_清雨小竹的博客-CSDN博客_uniapp md5 引入md5.js后,在main.js中import后,无法使用md5.h ...
- 一、uniapp项目(封装异步请求、moment.js时间处理、封装手势滑动组件、下载图片到本地)
一.封装异步请求: 1. 为什么要封装? 2. 封装的思路 export default (params) => {// 显示加载中uni.showLoading({title: "加 ...
- uniapp封装请求的方法(luch-request插件使用)
1.安装luch-request npm i luch-request -S 2.设置根地址 新建一个baseUrl目录 ,设置一个url.js //基础Api const BASE_API=&quo ...
- php封装一个加密算法,PHP封装的非对称加密RSA算法示例
本文实例讲述了PHP封装的非对称加密RSA算法.分享给大家供大家参考,具体如下: 将php的openssl扩展中的非对称加密函数封装成一个Rsa类. 需要注意的是,在windows上,需要打开open ...
- uniapp封装方法
uniapp封装方法 参考:https://www.cnblogs.com/gqx-html/p/10967570.html 根据报错和实际情况作了一些修改 1.环境配置 common文件夹下新建co ...
最新文章
- 用它调试线上 bug,真得劲 | webconsole
- [开发工具]JBuilder2008已经发布
- 遇到虚拟系统内存问题怎么办?Hypervisor帮你除bug
- 列表推导式与生成表达式的区别
- xml与java对象转换 -- XStreamAlias
- 剑指offer---用两个栈实现队列
- LeetCode 257. Binary Tree Paths (二叉树路径)
- RabbitMQ的问题
- php中curl的用法
- 瑞友杯虚拟化征文---瑞友天翼应用虚拟化之实战演示
- python爬虫实例
- matlab7.0 win10安装报错,win10系统安装Matlab7.0后出现Runtime Error警告窗口的技巧介绍...
- jq vue js json转字符串 字符串转json
- 卸载office 2016 报错:错误1321
- 自动驾驶公司如何打造产品市场体系
- 【css】让img图片居中显示
- 骨传导式耳机推荐,2021骨传导耳机排行榜
- 最新版项目部署到腾讯云超详细教学
- 软件测试基础-Web前端(二)
- 再现地表最强屏幕,三星Note 9破11项纪录称皇
热门文章
- 基于java的在线考试系统源码
- 计算机启动硬盘自检,硬盘自检怎么关闭-电脑启动时硬盘自检的解决方法 - 河东软件园...
- [时态]七、时态总结
- 基于MATLAB的图像拼接技术
- vue遇到ie兼容问题如何处理_详解vue 兼容IE报错解决方案
- 防爆等级Exd II BT4含义介绍
- [综]Review of bike-sharing system studies using bibliometrics method
- php即时聊天的框架_workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)...
- VR全景+汽车,打造汽车销售新模式
- 读书笔记之《从优秀到卓越》