Получение списка пунктов выдачи заказов Озон
Разработка - Универсальные функции
Всем привет!
Т.к. во многих интернет-магазинах стараются интегрироваться со службами доставки, приходится писать различные интеграции с этими службами. Далеко не всегда, эти компании предоставляют примеры кода для интеграции с 1С (в моей практике, когда занимался этим много - таких ситуаций практически не встречалось).
Сейчас пришлось опять взяться за интеграцию, на этот раз с Озон. Для экономии времени других разработчиков, привожу вариант получения списка пунктов выдачи заказов (ПВЗ).
Первый момент, с которым столкнется любой разработчик интеграции с Озон - это получение токена:
Функция ПолучитьТокенОзон() Экспорт
//описание https://docs.ozon.ru/api/rocket/#tag/Token
Токен = Неопределено;
УрлСервиса = "https://xapi.ozon.ru/principal-auth-api/connect/token";
client_id = "Principal_ххххххххххх_хххххххх-хххх-хххх-хххх-хххххххххххх"; //здесь у нас ID, полученный в ЛК Озон
client_secret = "ххххххххххххххххх";//а здесь пароль, полученный там же
Сообщение = "grant_type=client_credentials&client_id="+client_id+"&client_secret="+client_secret;
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("POST", УрлСервиса,0);
WinHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
WinHttp.SetRequestHeader("Content-Length", XMLСтрока(СтрДлина(Сообщение)));
WinHttp.SetRequestHeader("Host", "xapi.ozon.ru");
WinHttp.Send(Сообщение);
Если WinHttp.Status<>200 Тогда //ошибка
Возврат(Токен);
КонецЕсли;
ТекстОтвета = WinHttp.ResponseText();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
Ответ = ПрочитатьJSON(ЧтениеJSON, Ложь);
ЧтениеJSON.Закрыть();
Токен = Ответ.access_token;
Возврат(Токен);
КонецФункции
А теперь, собственно, получение самих ПВЗ:
Функция ПолучитьСписокПВЗ_Озон() Экспорт
СписПВЗ = Новый Массив;
Токен = ПолучитьТокенОзон();
УрлСервиса = "https://xapi.ozon.ru/principal-integration-api/v1/delivery/variants";
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("GET", УрлСервиса,0);
WinHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
WinHttp.SetRequestHeader("Content-Length", "0");
WinHttp.SetRequestHeader("Host", "xapi.ozon.ru");
WinHttp.SetRequestHeader("authorization", "Bearer "+Токен);
WinHttp.Send();
Если WinHttp.Status<>200 Тогда //ошибка
Возврат(СписПВЗ);
КонецЕсли;
ТекстОтвета = WinHttp.ResponseText();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
Ответ = ПрочитатьJSON(ЧтениеJSON, Ложь);
ЧтениеJSON.Закрыть();
Для Каждого ТекАдреса Из Ответ.Data Цикл
Пвз = Новый Структура("КодПункта, Адрес, Город, ГородФильтр, Координаты, Телефон, ОписаниеПроезда, ТипПВЗ");
Пвз.КодПункта = ТекАдреса.id;
Пвз.Адрес = ТекАдреса.address;
Пвз.Город = ТекАдреса.settlement;
Пвз.ГородФильтр = ТекАдреса.settlement;
Пвз.Координаты = "Ш."+ТекАдреса.lat+" Д."+ТекАдреса.long;
Пвз.Телефон = ТекАдреса.phone;
Пвз.ОписаниеПроезда = ТекАдреса.howToGet;
Пвз.ТипПВЗ = ТекАдреса.ObjectTypeName;
СписПВЗ.Добавить(Пвз);
КонецЦикла;
Возврат(СписПВЗ);
КонецФункции
Приводить дальнейший код записи в базу и использования ПВЗ бессмысленно, т.к. в разных конфигурациях будет разная структура хранения данных - у кого-то самописные, у кого-то древние переписанные, а кто-то на типовых.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
67620 руб.
22.03.2021 313552 2603 2186
23.01.2023 82727 785 user1468243 212
28800 руб.
12.05.2021 123662 1073 274
5490 руб.
12.08.2021 48524 654 71
6000 руб.
11.12.2019 68100 1163 3
6000 руб.
26.11.2020 51323 865 4