Как использовать функцию извлечения узла () так же, как запрос? (API отклоняет KEY)
В моем приложении я использую async/await
логика для работы с API.
Проблема в том, что я не могу понять, почему check()
Функция работает без проблем:
const KEY = 'my key';
const SECRET = 'my secret';
function getSign(form) {
return crypto.createHmac('sha512', SECRET).update(form).digest('hex').toString();
}
async function check() {
let form = {};
let header = {'Content-Type':'application/x-www-form-urlencoded'};
header.KEY = KEY;
header.SIGN = await getSign(querystring.stringify(form));
// Checking the state (works)!
let info = await fetch(API_TRADE_URL + OPENORDERS_URL, { method:'POST', headers:header, form:form })
info = info.json();
return info;
}
… в то время как placeOrder()
происходит сбой функции и API отправляет сообщение о проблеме с KEY / SECRET (Invalid data
):
async function placeOrder ( currencyPair, rate, amount ) {
let form = { 'currencyPair':currencyPair, 'rate':rate, 'amount':amount };
let header = {};
header.KEY = KEY;
header.SIGN = getSign(querystring.stringify(form));
// Here I am placing the order (does not work!)
let orderRes = await fetch(API_TRADE_URL + BUY_URL, { method:'POST', headers:header, form:form } );
orderRes = orderRes.json();
return orderRes;
}
Я с подозрением относился к паре КЛЮЧ / СЕКРЕТ или getSign()
функция но buy()
функция (на основе узлов request
), предоставляемая в качестве демонстрации на сайте API (функция, которую я пытаюсь имитировать), работает как положено:
function buy(currencyPair, rate, amount, cp) {
let form = {'currencyPair':currencyPair,'rate':rate,'amount':amount};
let header = {};
header.KEY = KEY;
header.SIGN = getSign(querystring.stringify(form));
// Here I am placing the order (works!)
Request({method: 'POST', url: API_TRADE_URL + BUY_URL, headers: header, form:form }, function (res) { console.log(res) });
}
Здесь важно то, что я не хочу использовать buy()
функция, потому что мне нужно работать без обратных вызовов здесь. Я использую те же данные, ту же логику (работая в check()
функция, упомянутая выше), но она не работает в случае placeOrder
функция.