Jump to content

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


barrer29

Recommended Posts

Posted

Добрый день!

Не удается сформировать 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);
    КонецЦикла;
    
    Возврат Хеш;

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

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

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

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

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

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

Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

    • Japan Post Bank запустит собственную цифровую валюту DCJPY

      В 2026 финансовом году Japan Post Bank собирается начать выпускать привязанную к иене цифровую валюту DCJPY. Задачей банк назвал желание активизировать оборот депозитных активов на сумму 190 трлн иен ($1,29 трлн). DCJPY представляет собой токенизированный депозит, привязанный к японской иене в соотношении 1:1 и обеспеченный депозитами банка. Цифровой актив будет запущен в закрытом блокчейне банка и доступен только авторизованным клиентам кредитного учреждения, объявил Japan Post.   Т

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

    • Дэйв Трой подал запрос в ФБР о личности Сатоси Накамото

      Американский журналист-расследователь и бизнесмен сообщил, что подал в Федеральное бюро расследований США запрос о личности анонимного создателя Биктоина, выступавшего под псевдонимом Сатоси Накамото. Дэйв Трой (Dave Troy) заявил, что обратился к ФБР, воспользовавшись законом «О свободе информации» (FOIA). Расследователь добавил в заявлении строчку про «всех остальных субъектов», так как под псевдонимом Сатоши Накамото (Satochi Nakamoto) могли работать не один человек, а консорциум или пра

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

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

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

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

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

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

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

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

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

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

×
×
  • Create New...