Имя: Пароль:
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. Хоть бы где сволочи это написали бы...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан