Печать этикетки Wildberries по новым методам api/v3
Добрый день.
В http запросах не силен, не могу найти где ошибка.
Задача - по номеру задания Wildberries получить этикетку с двухмерным штрихкодом.
Ранее все работало по сервису /api/v2/orders/stickers/pdf:
Код модуля:
На выходе получаю:
Статус выполнения по новому
{"code":"IncorrectParameter","message":"Передан некорректный параметр"}
Не могу понять, какие параметры некорректны.
Описание методов АПИ:
https://openapi.wildberries.ru/
В http запросах не силен, не могу найти где ошибка.
Задача - по номеру задания Wildberries получить этикетку с двухмерным штрихкодом.
Ранее все работало по сервису /api/v2/orders/stickers/pdf:
Код модуля:
Заголовки=новый Соответствие();
Заголовки.Вставить("Authorization",Токен);
Заголовки.Вставить("Content-Type","application/json");
Заголовки.Вставить("Accept","application/json");
SSL_Соединение=Новый ЗащищенноеСоединениеOpenSSL();
HttpСоединение=новый HttpСоединение("suppliers-api.wildberries.ru",443,,,,,SSL_Соединение);
posting_number = Новый Массив; //Массив с номерами заданий ВБ
posting_number.Добавить(НомерЗаказаВБ);
//Блок по старому:
Сервис="/api/v2/orders/stickers/pdf";
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("orderIds", posting_number);
ПараметрыЗапроса.Вставить("type", "qr");
ТелоЗапроса = Ozon_ОбщегоНазначенияВызовСервера.ПреобразоватьДанныеВJSON(ПараметрыЗапроса);
ПерекодированныйЗапрос = Ozon_ОбщегоНазначенияКлиентСервер.ПерекодироватьСтроку(ТелоЗапроса);
//Основной запрос
HTTPЗапрос=новый HttpЗапрос(сервис,заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ПерекодированныйЗапрос, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
HttpОтвет=HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
СостояниеВыполнения = HttpОтвет.ПолучитьТелоКакСтроку();
Сообщить(СостояниеВыполнения);
На выходе ранее получал двоичные данные, сейчас получаю:
{"additionalErrors":null,"data":{},"errorText":"Работа методов v2 ограничена. Методы в процессе деактивации. Просьба перейти на методы v3:\nhttps://openapi.wb.ru/#tag/Marketplace-Sborochnye-zadaniya\nhttps://openapi.wb.ru/#tag/Marketplace-Ostatki","error":true}
Попробовал перейти на новые методы, изменил код:
Сервис="/api/v3/orders/stickers";
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("orders", posting_number);
ПараметрыЗапроса.Вставить("type", "png");
ПараметрыЗапроса.Вставить("width", 58);
ПараметрыЗапроса.Вставить("height", 40);
ТелоЗапроса = Ozon_ОбщегоНазначенияВызовСервера.ПреобразоватьДанныеВJSON(ПараметрыЗапроса);
ПерекодированныйЗапрос = Ozon_ОбщегоНазначенияКлиентСервер.ПерекодироватьСтроку(ТелоЗапроса);
HTTPЗапрос=новый HttpЗапрос(сервис,заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ПерекодированныйЗапрос, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
HttpОтвет=HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
СостояниеВыполнения = HttpОтвет.ПолучитьТелоКакСтроку();
Сообщить(СостояниеВыполнения);
ПоказатьНа выходе получаю:
Статус выполнения по новому
{"code":"IncorrectParameter","message":"Передан некорректный параметр"}
Не могу понять, какие параметры некорректны.
Описание методов АПИ:
По теме из базы знаний
- Интеграция с маркетплейсами МегаМаркет, Wildberries, OZON, ЯндексМаркет, VK, Avito, Леруа Мерлен, Aliexpress, КУПЕР, Dostavista
- SynchroWB - Интеграция 1С и Wildberries по API с УТ, КА, ERP, УНФ, Розница 3: расширение для синхронизации и обмена
- Загрузка заказов по API Wildberries. Печать стикеров для FBS (в т.ч. в формате QR-кода). Для УТ 10.3. Загрузка и выгрузка остатков
- Модуль интеграции 1С и Wildberries+Яндекс Маркет+СберМегамаркет по схеме FBO+FBS для УТ 11, КА, ERP, УНФ
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
На другом ресурсе подсказали уже.
Если кому требуется, то корректный код:
Все работает.
Если кому требуется, то корректный код:
Сервис="/api/v3/orders/stickers?type=png&width=58&height=40";
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("orders", posting_number);
Все работает.
Столкнулся точно с такой же проблемой: при обращении к сервису Wildberries: "/api/v3/orders/stickers?type=png&width=58&height=40" с помощью метода HTTPЗапрос.УстановитьТелоИзСтроки(ТекстТелоЗапроса,КодировкаТекста.ANSI,ИспользованиеByteOrderMark.Использовать) всегда возвращалась ошибка с кодом 400 {"code":"IncorrectRequestBody","message":"Некорректное тело запроса"}
проблему удалось устранить переключившись на использование метода HTTPЗапрос.УстановитьИмяФайлаТела(ИмяВремФайла);
В результате конструкция обрела следующий вид:
Проверено на релизе 1С:Предприятие 8.3 (8.3.20.1674)
проблему удалось устранить переключившись на использование метода HTTPЗапрос.УстановитьИмяФайлаТела(ИмяВремФайла);
В результате конструкция обрела следующий вид:
СтрокаТелоЗапроса = СформироватьСтрокуHTTPЗапроса_ФайлУпаковочнойЭтикетки();
ИмяВремФайла = ПолучитьИмяВременногоФайла("txt");
Текст = Новый ЗаписьТекста(ИмяВремФайла, КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку(СтрокаТелоЗапроса);
Текст.Закрыть();
HTTPЗапрос1 = Новый HTTPЗапрос;
HTTPЗапрос1.АдресРесурса= "/api/v3/orders/stickers?type=png&width=58&height=40";
HTTPЗапрос1.Заголовки = ЗаголовкиЗапроса;//инициализируются в другом месте
HTTPЗапрос1.УстановитьИмяФайлаТела(ИмяВремФайла);
HTTPОтвет1 = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос1);
ПоказатьПроверено на релизе 1С:Предприятие 8.3 (8.3.20.1674)
(4) Получилось добиться результата таким образом
МассивЗаданий = Новый Массив;
В массив заданий помещаем числовые значения идентификаторов сборочных заданий
СтруктураЗаданий = Новый Структура("orders",Задания);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись,СтруктураЗаданий);
HTTPЗапрос.УстановитьТелоИзСтроки(Запись.Закрыть(),КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);
МассивЗаданий = Новый Массив;
В массив заданий помещаем числовые значения идентификаторов сборочных заданий
СтруктураЗаданий = Новый Структура("orders",Задания);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись,СтруктураЗаданий);
HTTPЗапрос.УстановитьТелоИзСтроки(Запись.Закрыть(),КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);
Картинка = Новый Картинка(Base64Значение(Значение из поля file))
Получаете картинку.
В табличном документе добавляете рисунок. Даете ему имя, например Этикетка
При выводе табличного документа
ОбластьСРисунком= Макет.ПолучитьОбласть("ОбластьЭтикетка");
ОбластьСРисунком.Рисунки.Этикетка.Картинка = Картинка;
Получаете картинку.
В табличном документе добавляете рисунок. Даете ему имя, например Этикетка
При выводе табличного документа
ОбластьСРисунком= Макет.ПолучитьОбласть("ОбластьЭтикетка");
ОбластьСРисунком.Рисунки.Этикетка.Картинка = Картинка;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот