Сообщение C++ для подписи в API kucoin

Я создаю бота с несколькими обменами на C++, и у меня возникла одна небольшая проблема. Обмен KuCoin оказался разочаровывающим, мягко говоря, одним из заголовков является заголовок подписи, в котором вы кодируете строку с помощью HMAC sha256, а затем кодируете THAT с помощью base64. Однако меня не волнует кодировка, я могу все это сделать. Что меня ставит в тупик, так это строка, которую ожидает API KuCoins, я просмотрел их документацию 100 раз и все еще не могу понять ее, вот инструкции

Для заголовка KC-API-KEY:

Используйте API-Secret, чтобы зашифровать прехеш-строку {timestamp+method+endpoint+body} с помощью sha256 HMAC. Тело запроса представляет собой строку JSON и должно совпадать с параметрами, передаваемыми API. После этого используйте base64-encode, чтобы снова зашифровать результат на шаге 1.

Я пытался создать эту строку всеми возможными способами, и в документации нет примеров того, как должна выглядеть хорошая строка. Вот строки, которые я создал ПЕРЕД кодированием, которые НЕ работают.

ПРИМЕР 1: 1616096476134POST/api/v1/orders? ClientOid=55be5&side=BUY&symbol=BTC-USDT&type=MARKET& Funds=0.005000

ПРИМЕР 2: 1616099932367POST/api/v1/orders{"clientOid":"55be5","side":"BUY","symbol":"BTC-USDT","type":"MARKET", "Funds": " 0"}

Как видите, во 2-м примере я попытался сделать тело строкой JSON со всеми правильными параметрами, но все же я получаю ошибку неверной подписи. Буквально все, что мне нужно, это знать, как должна выглядеть струна, чтобы я мог правильно ее обработать. Спасибо.

2 ответа

Я исхожу из предположения, что ваш код работает для частного запроса без параметров (например, получения баланса).

Я также немного боролся с запросами POST, но мне удалось получить его сразу после нескольких попыток. Вам нужно выгрузить параметры в виде строки JSON без пробелов, как в вашем примере 2.

С тех пор удалось ли вам понять это правильно? У меня есть код в моем приложении, который работает, если вам интересно.

Также не забудьте добавить в заголовки curl запрос.

      Content-Type: application/json

Решено с поддержкой Kucoin и примером питона. «Тело» также должно быть включено в запрос POST. Было:

      reply = netman->post(req, "");

Стали:

      tradereply = trademan->post(req, data);
Другие вопросы по тегам