Имя: Пароль:
1C
1С v8
Интеграция с Rozetka
🠗 (Волшебник 20.12.2022 16:16)
0 profiler
 
20.12.22
16:15
Добрый день
Пишу интеграцию с Rozetka
Токен получил, все ок.
Отправляю запрос с параметром на получение описания товара - получаю в ответе "access_denied", если не указывать параметры в запросе, к примеру для получения всех товаров - ошибки нет
Походу проблема у меня в параметрах запроса.
Что я делаю не так, помогите, плиз
    Токен = ПолучитьТокенРозеткаНаСервере();
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Authorization","Bearer " + Токен);
    Ошибка = "";
    
    ДанныеТовара = Новый Структура();
    ДанныеТовара.Вставить("id", "302179473");
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, ДанныеТовара);
    
    ТелоЗапроса = ЗаписьJSON.Закрыть();
    
    АдресAPI = "api-seller.rozetka.com.ua";
    ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows());
    Соединение = Новый HTTPСоединение(АдресAPI,,,,,60,ssl);
    ЗапросHTTP = Новый HTTPЗапрос;
    ЗапросHTTP.АдресРесурса = "/items";
    ЗапросHTTP.Заголовки = Заголовки;
    ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
    Попытка
        Ответ = Соединение.ВызватьHTTPМетод("GET", ЗапросHTTP);
    Исключение
        ВызватьИсключение;
    КонецПопытки;
    Если Ответ.КодСостояния = 200 Тогда
        ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(ТелоОтвета);
        ПолученноеСоответствие = ПрочитатьJSON(Чтение, Истина);
    КонецЕсли;
1 Волшебник
 
модератор
20.12.22
16:16
У нас ваша Розетка вообще не открывается
https://rozetka.com.ua/
2 profiler
 
20.12.22
16:18
(1) У вас может и не открывается, но тут могут быть люди, у которых открывается
3 Kassern
 
20.12.22
16:25
(0) написано же доступ запрещен.
Я бы еще попробовал ssl = Новый ЗащищенноеСоединениеOpenSSL(Неопределено,Неопределено);
4 Kassern
 
20.12.22
16:26
"если не указывать параметры в запросе" - так может у вас нет доступа использовать параметры? В общем читайте документацию API
5 profiler
 
20.12.22
16:30
(3) если использовать другой запрос, как ниже на поиск товаров (без параметров запроса), то ответ получаю
В ответе первые 20 товаров

    Токен = ПолучитьТокенРозеткаНаСервере();
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Authorization","Bearer " + Токен);
    Ошибка = "";
    
    
    АдресAPI = "api-seller.rozetka.com.ua";
    ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows());
    Соединение = Новый HTTPСоединение(АдресAPI,,,,,60,ssl);
    ЗапросHTTP = Новый HTTPЗапрос;
    ЗапросHTTP.АдресРесурса = "/items/search";
    ЗапросHTTP.Заголовки = Заголовки;
    ЗапросHTTP.УстановитьТелоИзСтроки("", "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
    Попытка
        Ответ = Соединение.ВызватьHTTPМетод("GET", ЗапросHTTP);
    Исключение
        ВызватьИсключение;
    КонецПопытки;
    Если Ответ.КодСостояния = 200 Тогда
        ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(ТелоОтвета);
        ПолученноеСоответствие = ПрочитатьJSON(Чтение, Истина);
    КонецЕсли;

Я так понял, что проблема где-то тут

    ДанныеТовара = Новый Структура();
    ДанныеТовара.Вставить("id", "302179473");
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, ДанныеТовара);
    
    ТелоЗапроса = ЗаписьJSON.Закрыть();
6 Kassern
 
20.12.22
16:41
(5) "Я так понял, что проблема где-то тут" - ну так посмотрите, что пишут в документации API, что нужно в теле передавать. Зайдите в отладку и посмотрите значение переменной в ТелоЗапроса и сравните его с тем, что в документации написано. Сделайте выводы.
7 Kassern
 
20.12.22
16:42
Скиньте сюда пример тела запроса из документации с отбором.
8 profiler
 
20.12.22
16:46
В документации АПИ нет никаких примеров, только описание методов
https://ibb.co/ZSPK1nC
9 hockeyist
 
20.12.22
17:07
(5) А в ответе что. В том, где первые 20 товаров? Какие id?
10 hockeyist
 
20.12.22
17:12
Стоп. Это же GET. Не надо никакого тела запроса. Id указываешь в строке. У тебя же, на твоей картинке и пример есть внизу. Посмотри внимательнее. И никакого search. Откуда ты его вообще взял?
11 profiler
 
20.12.22
17:17
(10) search - это другой запрос - на получение товаров
Спасибо - работает, если прям в строке и без тела
Тема закрыта
12 Kassern
 
20.12.22
17:20
(8) "В документации АПИ нет никаких примеров" - и на самом скрине внизу request example))
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой