Имя: Пароль:
1C
1С v8
Помогите с подключением к АПИ биржи
0 TimofeySin
 
15.01.18
20:28
Вот мануал по подключению: https://wex.nz/tapi/docs
Почему оно не работает то!
причем кодирование проверял по всяким сайтам из инета, с моим совпадает.
Написал вот такой код:
&НаСервере                                
Процедура ПолучениеМоегоБаланса()
    КлючАпи= "всякие буковки";       //Мой ключ API с сайта с правом info
    Секрет =  "всякие буковки";                ///Мой Secret с оттуда же
    постЗапрос =  "method=getInfo&nonce="+СтрЗаменить(Объект.nonce,Символы.НПП,"");    
    Соединение = Новый HTTPСоединение("wex.nz",,,,,,Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено));  ///https подключение
    HTTPЗапрос = Новый HTTPЗапрос("/tapi");                                          //запрос  к https://wex.nz/tapi
    HTTPЗапрос.Заголовки.Вставить("Key",КлючАпи);

    HTTPЗапрос.Заголовки.Вставить("Content-Type","application/x-www-form-urlencoded");
    
    Ключ = ЗашифроватьSHA512(постЗапрос,Секрет);         //   Вот тут шифрую строку   method=getInfo&nonce=1
    HTTPЗапрос.Заголовки.Вставить("Sign",Ключ);         //вставляю это всё в заголовок

    HTTPЗапрос.УстановитьТелоИзСтроки(постЗапрос,КодировкаТекста.UTF8);       //Делаю POST запрос со строкой method=getInfo&nonce=1
    Результат  = Соединение.ОтправитьДляОбработки(HTTPЗапрос);        
    СтрокаJson = Результат.ПолучитьТелоКакСтроку();    
    Сообщить(СтрокаJson);                                    //Вот тут получаю   {"success":0,"error":"invalid sign"}
    ///Да что не так то?
    ЧтениеJSON  = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJson);
    Результат = ПрочитатьJSON(ЧтениеJSON);
    Объект.nonce = Объект.nonce + 1;            
КонецПроцедуры

&НаСервере
Функция ЗашифроватьSHA512(Строка, СекретныйКлюч)
    Текст = Новый COMОбъект("System.Text.UTF8Encoding");
    Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA512");
    Криптография.Key = Текст.GetBytes_4(СекретныйКлюч);
    ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Строка)).Выгрузить();  ///Вот тут массив байтиков
    // Преобразование хэш-суммы в строку.
    StringBuilder = Новый COMОбъект("System.Text.StringBuilder");
    Для Каждого Элемент Из ХешБайт Цикл
        StringBuilder.AppendFormat("{0:x2}", Элемент);      //вот тут преобразую в Hex
    КонецЦикла;    
    Стр = "";
    Для Индекс = 0 по ХешБайт.ВГраница() Цикл
        Стр = Стр + Символ(ХешБайт[Индекс]);
    КонецЦикла;    
    Возврат StringBuilder.ToString();    //строку возвращаю
КонецФункции
1 Волшебник
 
модератор
15.01.18
20:32
1. Где текст ошибки?
2. Что говорят разработчики?
3. При чём тут миста?
2 TimofeySin
 
15.01.18
20:40
Текст ошибки
Сообщить(СтрокаJson);                                    //Вот тут получаю   {"success":0,"error":"invalid sign"}

Разработчики молчат.

Ну может кто-то с таким сталкивался....
3 tesseract
 
15.01.18
21:12
С учетом такого количества байтов и сторонних компонент - ты хоть дампь отправку. Хрень с символами - стандартная проблема всех HTTP-сервисов.
4 TimofeySin
 
16.01.18
08:52
Из функции ЗашифроватьSHA512(Строка, СекретныйКлюч)
возвращается строка типа
"87086911ECB637326DAF420ED3622FC0720A2E1D9F8124770990B3EB7B2BF1A8CC357C8F163594278E0606799BD08DDF7CEA42404080661E02E54F7C1F86BDE8"

Я её сравнивал с сайтом генерации sha512, совпадает.
Я грешу может я что с "Заголовками" напутал или там с тем что шифрую... уже мыслей блин нет
5 pablo_escobar
 
16.01.18
09:42
На инфостарте есть обработки по подключению к wex.nz
6 TimofeySin
 
16.01.18
13:21
pablo_escobar, Спасибо тебе огромное! оказалось надо было еще post параметром слать apikey. Хоть бы где сволочи это написали бы...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.