Как использовать функцию извлечения узла () так же, как запрос? (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 функция.

0 ответов

Другие вопросы по тегам