app直播源码,uniapp随机数生成签名
app直播源码,uniapp随机数生成签名
1、首先,需要引入 node.js 内置模块 crypto,它提供了一些加密相关的函数和方法。可以在项目的 common 文件夹下新建一个 js 文件,例如 utils.js,并在其中定义一个生成随机串的方法,例如:
// 引入 node.js 内置模块 crypto
const crypto = require('crypto');
/**
* 生成指定长度的随机字符串
* @param {Number} length 随机字符串的长度,默认为 16
* @return {String} 生成的随机字符串
*/
export function generateNonceStr(length = 16) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const maxPos = chars.length;
let nonceStr = '';
for (let i = 0; i < length; i++) {
nonceStr += chars.charAt(Math.floor(Math.random() * maxPos));
}
return nonceStr;
}
/**
* 根据参数对象生成签名
* @param {Object} params 参数对象
* @param {String} key 秘钥
* @return {String} 生成的签名
*/
export function generateSignature(params, key) {
// 按照字典序排序所有参数
const sortedParams = Object.keys(params).sort().reduce((obj, key) => {
obj[key] = params[key];
return obj;
}, {});
// 将参数拼接成 key=value&key=value 的形式,并以 &key=API_KEY的方式结尾
const str = Object.entries(sortedParams)
.filter(([key, value]) => value !== '' && typeof value !== 'undefined')
.map(([key, value]) => `${key}=${value}`)
.join('&') + `&key=${key}`;
// 使用 MD5 算法对拼接后的字符串进行加密,并返回加密结果的大写字母形式
return crypto.createHash('md5').update(str, 'utf8').digest('hex').toUpperCase();
}
2、在项目中使用时,可以按照以下方式调用:
import { generateNonceStr, generateSignature } from '@/common/utils';
// 示例:生成支付预订单需要的随机串和签名
const params = {
appid: 'your_appid',
mch_id: 'your_mch_id',
nonce_str: generateNonceStr(),
body: '商品描述',
out_trade_no: '商户订单号',
total_fee: '订单总金额',
spbill_create_ip: '调用支付接口的机器 IP',
notify_url: '接收微信支付异步通知回调地址',
trade_type: 'JSAPI',
openid: '用户 openid'
};
const key = 'your_key';
const sign = generateSignature(params, key);
console.log('随机串:', params.nonce_str);
console.log('签名:', sign);
以上就是 app直播源码,uniapp随机数生成签名,更多内容欢迎关注之后的文章