Перейти к содержанию

POST запрос к API Kucoin из 1C


barrer29

Рекомендуемые сообщения

Добрый день!

Не удается сформировать POST запрос,  выдает ошибку "signature verification failed"

GET запросы и авторизация отрабатывают нормально.

Может кто уже сталкивался с такой проблемой?

 

Процедура Запрос()
    
    apikey    = "";
    apisecret = "";
    method = "/v1/order";
    server = "api.kucoin.com";
    ПутьЗапроса = method;

    nonce = Формат(((УниверсальноеВремя(ТекущаяДата()) - дата(1970,1,1,1,0,0))+1*60*60)*1000, "ЧГ=0");
    
    ЗаголовокHTTP = Новый Соответствие(); 
    ЗаголовокHTTP.Вставить("content-type", "application/x-www-form-urlencoded;");
    
    SSL = Новый ЗащищенноеСоединениеOpenSSL;
    HTTPСоединение = Новый HTTPСоединение(server,,,,,,SSL);
    
    ТелоЗапроса = "";
    
    СтрокаПараметров = "amount=2&price=0.00019&symbol=KCS-BTC&type=sell";
    
    signature   = ПутьЗапроса+"/"+nonce+"/"+СтрокаПараметров;

    ТелоЗапроса = СтрокаПараметров; 


    payload = signature;
    payload = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(payload, КодировкаТекста.UTF8));
    sign=hash_hmac_sha256(payload,apisecret);
    
    ЗаголовокHTTP.Вставить("KC-API-SIGNATURE", sign);
    ЗаголовокHTTP.Вставить("KC-API-KEY", apikey);
    ЗаголовокHTTP.Вставить("KC-API-NONCE", nonce);
    ЗаголовокHTTP.Вставить("Connection", "Keep-alive");
    ЗаголовокHTTP.Вставить("GET", ПутьЗапроса + " HTTP/1.1");
    ЗаголовокHTTP.Вставить("Host", server);
    ЗаголовокHTTP.Вставить("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64)");

    ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
    ЗаголовокHTTP.Вставить("Accept", "application/json, text/javascript, */*; q=0.01");

    

Запрос = Новый HTTPЗапрос(ПутьЗапроса, ЗаголовокHTTP);
    
    Попытка
    Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(Запрос);
Исключение
    КонецПопытки;
    
   Ошибка = ИнформацияОбОшибке();

   HTTPОтвет = Новый Структура("КодСостояния, Описание", 500, Ошибка.Причина.Описание);
   Состояние(HTTPОтвет.Описание);

КонецПроцедуры

 

Функция hash_hmac_sha256(Строка, СекретныйКлюч,base64 = Ложь)
    Текст = Новый COMОбъект("System.Text.UTF8Encoding");
    Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA256");
    Криптография.Key = Текст.GetBytes_4(СекретныйКлюч);
    Если base64 Тогда
        ТекстASCII = Новый COMОбъект("System.Text.ASCIIEncoding");
        ХешБайт = Криптография.ComputeHash_2(ТекстASCII.GetBytes_4(Строка)).Выгрузить();
    Иначе
        ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Строка)).Выгрузить();
    КонецЕсли;
    Хеш = ConvToHexString(ХешБайт);
    Возврат Хеш;
КонецФункции

 

Функция ConvToHexString(ХешБайт)
    
    Соотв16 = Новый Соответствие;
    Соотв16.Вставить(0 , "0");
    Соотв16.Вставить(1 , "1");
    Соотв16.Вставить(2 , "2");
    Соотв16.Вставить(3 , "3");
    Соотв16.Вставить(4 , "4");
    Соотв16.Вставить(5 , "5");
    Соотв16.Вставить(6 , "6");
    Соотв16.Вставить(7 , "7");
    Соотв16.Вставить(8 , "8");
    Соотв16.Вставить(9 , "9");
    Соотв16.Вставить(10, "a");
    Соотв16.Вставить(11, "b");
    Соотв16.Вставить(12, "c");
    Соотв16.Вставить(13, "d");
    Соотв16.Вставить(14, "e");
    Соотв16.Вставить(15, "f");
    
    Хеш = "";
    Для Каждого Байт Из ХешБайт Цикл
        Чс = Цел(Байт/16);
        Хеш = Хеш + Прав("0" + Соотв16.Получить(Чс) + Соотв16.Получить(Байт-Чс*16), 2);
    КонецЦикла;
    
    Возврат Хеш;

КонецФункции
 

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, barrer29 сказал:

Все спасибо, разобрался.

Может быть всем расскажете?

 Вдруг на форум зайдет другой крипто-1С-энтузиаст с подобным вопросом? ? 

На ваше усмотрение, разумеется.

Ссылка на комментарий
Поделиться на другие сайты

На самом деле все оказалось просто, перед хешированием данных, удалить лишние символы у кодированной строки, конкретно символы перевода строки. 

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • Биржа Gemini раскритиковала издание New York Post за дискредитирующую статью

      Руководство криптовалютной биржи Gemini выразило недовольство статьей издания New York Post о программе Gemini Earn, назвав ее преднамеренной попыткой манипулировать общественным мнением. Из статьи New York Post следует, что в августе 2022 года Gemini вывела $282 млн от обанкротившегося криптокредитора Genesis Global. Посыл сообщения заключался в том, что действия Gemini были сомнительными и не несли пользу для инвесторов, а биржа неэффективно управляла средствами.   Gemini опровергл

      в Новости криптовалют

    • New York Post: Гэри Генслер превратил SEC в банановую республику

      Авторы издания New York Post присвоили председателю Комиссии по ценным бумагам и биржам США статус «главы банановой республики, который заслужил место в зале славы канцелярских диктаторов США». Руководитель SEC Гэри Генслер (Gary Gensler) активно примеряет на себя «мундир главного полицейского на Уолл-стрит», пишут нью-йорские журналисты.    Под руководством этого человека Комиссия готова превращать любую оплошность и прозаические дела в события века, но при этом глава SEC предпочит

      в Новости криптовалют

    • Суд одобрил запрос IRS на предоставление информации о счетах и операциях клиентов Kraken

      Федеральный суд Северного округа Калифорнии одобрил запрос Налоговой службы США (IRS) о предоставлении информации о пользователях криптовалютной биржи Kraken. Запросе был подан еще в феврале этого года. IRS интересуют счета пользователей Kraken, которые совершили операции на сумму свыше $20 000 за календарный год в период с 2016 по 2020 годы.    Биржа должна будет передать ведомству имя пользователя и его псевдонимы, дату рождения, номер налогоплательщика, адрес, телефон, адрес элект

      в Новости криптовалют

    • Суд отклонил запрос SEC на заморозку активов Binance.US

      По мнению федерального судьи США Эми Берман Джексон, государству совершенно не обязательно замораживать активы Binance.US, поскольку SEC и компания могут самостоятельно обговорить ограничения. Таким образом, американское подразделение крупнейшей криптовалютной биржи может продолжать свою деятельность. Однако Эми Берман Джексон (Amy Berman Jackson) обязала руководство Binance.US предоставить в суд список деловых расходов площадки и приказала обеим сторонам продолжить переговоры.   В з

      в Новости криптовалют

    • Kraken просит суд отклонить запрос IRS на предоставление данных клиентов

      Криптовалютная биржа Kraken просит суд признать неправомерным запрос Налоговой службы США (IRS) о предоставлении информации о пользователях биржи, сообщает издание Bloomberg. Суд проведет слушание по этому делу в мае, чтобы заслушать аргументы обеих сторон.   «Вместо того, чтобы соблюдать основные правила, IRS удваивает ставки, делая еще более обширные запросы», — говорится в заявлении Kraken.   IRS сообщила, что искала учетные записи Kraken, на которых было не менее $20 000

      в Новости криптовалют

×
×
  • Создать...