app直播源码,uniapp随机数生成签名

发布时间 2023-11-09 09:43:44作者: 云豹科技-苏凌霄

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随机数生成签名,更多内容欢迎关注之后的文章