签名串:按照接口中定义的参数名按首字母(首字母相同看第二个字母,依此类推)顺序进行排列,将所有参数值(除了 hmac)按照上面的排序通过key=value&方式连接起来,加密方式为MD5。
第一步,下载md5.js,放置于utils文件夹下。
第二步,utils文件夹下,新建sortJson.js,用于顺序key=value并以&连接。
function jsonSort(jsonObj) {
let arr = [];
for (var key in jsonObj) {
arr.push(key)
}
arr.sort();
let str = '';
for (var i in arr) {
str += arr[i] + "=" + jsonObj[arr[i]] + "&"
}
return str.substr(0, str.length - 1)
}
exports.jsonSort = jsonSort;
第三步,所需页面引入并使用。
const { jsonSort } = require("../../utils/sortJson.js");
const { hexMD5 } = require('../../utils/md5.js');
const MD5_KEY = ''; // 此MD5_KEY为java提供,固定值。
// 此处请求为封装请求,请查看微信小程序请求封装
https://blog.csdn.net/qq_46003166/article/details/104661384
getPhone(){
//发起网络请求
let url = app.globalData.url + '/phoneNumber';
let reqInfo = {
requestId: Math.round(new Date().getTime() / 1000),
distributorId: '111',
organizationCode: '111',
signType: 'MD5',
iv: this.decodePhone[0],
encryptedData: this.decodePhone[1],
sessionKey: wx.getStorageSync('temp')[1],
timeStamp: Math.round(new Date().getTime() / 1000),
};
// 此处为使用方式,具体根据实际要求使用
reqInfo.hmac = hexMD5(jsonSort(reqInfo) + MD5_KEY).toUpperCase()
let data = Object.defineProperties(reqInfo, {
hmac: { //定义属性hmac
value: reqInfo.hmac,
writable: true, //可写
}
});
app.wxRequest('POST', url, data, (res) => {
console.log(res.data)
}, (err) => {
console.log(err.errMsg)
wx.showToast({
title: '提示内容',
icon: 'none',
duration: 1500
})
})
},
来源:CSDN
作者:昔年不忆-
链接:https://blog.csdn.net/qq_46003166/article/details/104672926