Сообщение 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);