В общем воспользовался ИИ - ChatGPT
Дал ему код с запросом переделать под JS
Он мне выдал весь код. Я только готовую переменную с pre_signed подсунул и убрал вывод url, так как почему то дублировались некоторые символы.
И вот что получилось. сигна совпадает с нужной, запрос срабатывает.
const crypto = require('crypto');
const querystring = require('querystring');
const API_KEY = [[API_KEY]];
const API_SECRET = [[SECRET_KEY]];
const timestamp = '2021-03-04T12:54:56';
const params_dict = {
AccessKeyId: API_KEY,
SignatureMethod: 'HmacSHA256',
SignatureVersion: '2',
Timestamp: timestamp
};
const params_url_enc = querystring.stringify(
Object.entries(params_dict).sort()
);
const pre_signed = [[PRE_SIGN]]
const sig_bin = crypto.createHmac('sha256', API_SECRET)
.update(pre_signed)
.digest();
const sig_b64_str = Buffer.from(sig_bin).toString('base64');
const sig_url = querystring.stringify({ Signature: sig_b64_str });
const url = `https://api.huobi.pro/v1/account/accounts?${params_url_enc}&${sig_url}`;
console.log(`API_KEY=${API_KEY}`);
console.log(`API_SECRET=${API_SECRET}`);
console.log(`timestamp=${timestamp}`);
console.log(`params_dict=${JSON.stringify(params_dict)}`);
console.log(`params_url_enc=${params_url_enc}`);
console.log(`pre_signed:\n${pre_signed}`);
console.log(`sig_bin=${sig_bin}`);
console.log(`sig_b64_str=${sig_b64_str}`);
console.log(`sig_url=${sig_url}`);