Каталог решений - Получение списка пунктов выдачи заказов Озон

Получение списка пунктов выдачи заказов Озон

Получение списка пунктов выдачи заказов Озон

В наличии

Использование API Озон для получения списка пунктов выдачи заказов (ПВЗ).

Категория:

Описание

Всем привет!

Т.к. во многих интернет-магазинах стараются интегрироваться со службами доставки, приходится писать различные интеграции с этими службами. Далеко не всегда, эти компании предоставляют примеры кода для интеграции с 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;
		СписПВЗ.Добавить(Пвз);
	КонецЦикла;
	
	Возврат(СписПВЗ);
КонецФункции

Приводить дальнейший код записи в базу и использования ПВЗ бессмысленно, т.к. в разных конфигурациях будет разная структура хранения данных — у кого-то самописные, у кого-то древние переписанные, а кто-то на типовых.

has been added to your cart:
Оформление заказа