const crypto = require('crypto');

const APPFLAG = 'dpfx91801';
const APPSECRET = '88fa244d77fce2b9b92c83a0dc88e38d';

function sign(params) {
    // 1. 对参数key做ASCII升序排序
    const sortedKeys = Object.keys(params).sort();

    let str = '';
    for (let key of sortedKeys) {
        if (key === 'sign') {
            // 签名串中不包含sign字段
            continue;
        }
        // 2. 拼接key和value，不添加任何字符
        str += key + params[key];
    }

    // 3. 在头部拼接appsecret
    str = APPSECRET + str;

    // 4. 计算md5值并转换为大写
    const hash = crypto.createHash('md5').update(str, 'utf8').digest('hex');
    return hash.toUpperCase();
}

let params = {
    'appflag': APPFLAG,           // 通用参数appflag必传
    'timestamp': String(Math.floor(Date.now() / 1000))  // 通用参数timestamp实时获取
};

console.log("params:",params)

// let helper = require('./src/helper')
// let timestamp = helper.getCurrentUnixTimestamp()

// 通用参数sign计算生成
params['sign'] = sign(params);
console.log(params);