Files
jjx-web/uniCloud-aliyun/cloudfunctions/router/util/pubFunction.js
T
2023-11-17 13:50:18 +08:00

158 lines
3.6 KiB
JavaScript

/**
* 自定义公共函数包
* 这里可以写你自己的公共函数
*/
var CryptoJS = require("crypto-js");
const crypto = require('crypto');
var pubFun = {};
/**
* 公共函数写法示例
* 调用示例:
* pubFun.test();
* 或
* vk.myfn.test();
*/
pubFun.test = function(path) {
// 此处可以直接使用 vk 实例
let timeStr = vk.pubfn.timeFormat(new Date(), "yyyy-MM-dd hh:mm:ss");
// 逻辑
// ...
// 逻辑
return {
timeStr,
msg: "这是公共函数test的返回"
}
}
const url = 'http://test.api.fabigbig.com:8888/api'
const app_id = 405942
const app_secret = 'ODDW0vm9FvDj2RYQRmoryVnH'
const getFadadaSign = function(api, params, timestamp) {
const copyParams = {
...params
}
//1. A.将参与摘要计算的业务参数按字典升序排列
let computeKeys = Object.keys(params)
var sortedParams = computeKeys.sort().reduce((acc, curr, index) => {
acc += params[curr];
return acc;
}, '');
// 1.B.将 app_secret 附加到字符串串前
let str1 = app_secret + sortedParams
console.log('sortedParams: ',sortedParams);
if (api == 'generate_contract.api') {
str1 = app_secret + params.template_id + params.contract_id
} else if (api == 'uploaddocs.api') {
str1 = app_secret + params.contract_id
} else if (api == 'extsign.api') {
str1 = app_secret + params.customer_id
}
// 步骤 2.对得到的字符串进⾏SHA1 加密
const sha1_1 = CryptoJS.SHA1(str1).toString().toUpperCase()
console.log('sha1_1: ', sha1_1);
// 步骤 3.计算 timestamp的MD5值,并和app_id,步骤 2 中得到的字符串拼接得到新的字符串
let timestampMd5 = ''
if (api == 'extsign.api') {
timestampMd5 = CryptoJS.MD5(params.transaction_id + timestamp).toString().toUpperCase()
} else {
timestampMd5 = CryptoJS.MD5(timestamp).toString().toUpperCase()
}
let str2 = app_id + timestampMd5 + sha1_1
if (api == 'generate_contract.api') {
str2 += params.parameter_map
} else if (api == 'extsign.api') {
}
// 步骤 4.对步骤3中得到的字符串进行SHA1 加密
const str3 = CryptoJS.SHA1(str2).toString().toUpperCase()
// 步骤 5.对步骤 4 中得到的字符串进⾏base64 加密
var wordArray = CryptoJS.enc.Utf8.parse(str3);
const msg_digest = CryptoJS.enc.Base64.stringify(wordArray);
return msg_digest;
}
pubFun.getFadadaSign = getFadadaSign
/**
* 给法大大发请求
* @param {Object} api
* @param {Object} params
*/
pubFun.fadada = async function(api, params) {
const timestamp = vk.pubfn.timeFormat(new Date(), "yyyyMMddhhmmss");
const msg_digest = getFadadaSign(api, params, timestamp)
const res = await vk.request({
url: url + '/' + api,
method: "POST",
header: {
"content-type": "application/x-www-form-urlencoded;charset=UTF-8",
},
data: {
app_id: app_id,
timestamp,
v: '2.0',
msg_digest,
...params
}
});
console.log('res: ', res);
return res;
}
function buildQueryString(params) {
let queryString = '';
for (const key in params) {
if (params.hasOwnProperty(key)) {
if (queryString.length > 0) {
queryString += '&';
}
queryString += `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`;
}
}
return queryString;
}
/**
* 给法大大发请求
* @param {Object} api
* @param {Object} params
*/
pubFun.fadadaUrl = function(api, params) {
const timestamp = vk.pubfn.timeFormat(new Date(), "yyyyMMddhhmmss");
const msg_digest = getFadadaSign(api, params, timestamp)
const queryParams = buildQueryString({
app_id: app_id,
timestamp,
v: '2.0',
msg_digest,
...params
});
const fullUrl = `${url}/${api}?${queryParams}`;
return fullUrl;
}
pubFun.base64ToFile = function(base64, fileName) {
}
module.exports = pubFun;