其中,`generateNonceStr`函数用于生成指定长度的随机字符串,`generateSign`函数用于生成签名。在调用微信支付接口时,需要将生成的随机字符串作为参数传递给微信支付接口。
生成指定长度随机字符串,默认32位
function generateNonceStr(length = 32) {
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;
}
生成签名,调用微信支付接口时,需要将生成的随机字符串作为参数传递给微信支付接口
const crypto = require('crypto');
function generateSign(params, key) {
const stringA = Object.keys(params).filter(key => params[key] !== undefined && params[key] !== '').sort().map(key => `${key}=${params[key]}`).join('&');
const stringSignTemp = `${stringA}&key=${key}`;
const sign = crypto.createHash('md5').update(stringSignTemp, 'utf8').digest('hex').toUpperCase();
return sign;
}