Подпись SHA1 недействительна при использовании массива в параметрах POST - PullRequest
0 голосов
/ 02 июня 2019

Я использую API обмена для создания бота.Обмен использует SHA1 и закрытый ключ для подписи HTTP-запросов.Все работает, за исключением случаев, когда один из моих параметров POST является массивом.

Я пытался использовать JSON.stringify и querystring.stringify вместо того, чтобы просто иметь массив как есть.Я даже пытался отправить параметры в виде строки, но ответ API говорит, что это должен быть массив.


    let api_key = 'api_key';
    let secret = fs.readFileSync('./key.pem').toString('ascii');
    var params: any = {
      amount: '1',
      api_key,
      begin_time: '',
      end_time: '',
      market: 'USDT',
      market_type: '1',
      page: '1',
      price: '150',
      size: '10',
      token: 'LTC',
      tokens: 'LTC', //this must be an array, but when I make it an array the signature becomes invalid
      type: '2',
    };
    const hash = crypto.createSign('sha1');
    hash.update(JSON.stringify(params));
    const signature = encodeURIComponent(hash.sign(secret, 'base64'));

    params = {
      sign: signature,
      ...params,
    };

    console.log(params);
    var api_endpoint = '/api_market/getBalance';
    var url = 'https://api.bcex.vip' + api_endpoint;
    var http_header = {
      'Content-Type': 'application/x-www-form-urlencoded',
    };

    request.post(
      url,
      {
        headers: http_header,
        body: querystring.stringify(params),
      },
      function(error, response, body) {
        if (error) {
          // res.json(error);
          console.error(error);
        } else {
          // res.json(body);
          // console.log(response);
          console.log(JSON.parse(body));
        }
      },
    );
  }

API Wiki: https://github.com/BCEX-TECHNOLOGY-LIMITED/API_Docs/wiki/Interface

Инструкции по подписи https://github.com/BCEX-TECHNOLOGY-LIMITED/API_Docs/wiki/Sign

Конечной точке getBalance нужны токены, чтобы быть массивом

1 Ответ

0 голосов
/ 02 июня 2019

Оказывается, проблема в библиотеке запросов, я изменил ее на qs, и теперь она работает.

...