Примеры кода реализации работы с API
1С
Получение информации о заказе со списком товарных позиций
Функция ТранспортЗаказовОтВТТ(Знач СтруктураРезультата,Знач ТаблицаЗначений, НомерПоДаннымПоставщика, ЗаполнятьПрефикс = Истина, Префикс, ПодготовитьДанныеДля1С77 = Ложь) СтруктураАвторизации = ПолучитьСтруктуруАвторизацииВТТ();
ВСОпределение = Новый WSОпределения(СтруктураАвторизации.СсылкаWSDL); ВССервис = ВСОпределение.Сервисы.Получить("http://portal.vtt.ru","PortalService"); ВТочкаВхода = ВССервис.ТочкиПодключения.Получить("BasicHttpBinding_IPortalService"); ВФункция = ВТочкаВхода.Интерфейс.Операции.Получить("GetOrderWithLines"); ВСПрокси = Новый WSПрокси(ВСОпределение,"http://portal.vtt.ru","PortalService","BasicHttpBinding_IPortalService"); Ответ = ВСПрокси.GetOrderWithLines(СтруктураАвторизации.Логин,СтруктураАвторизации.Пароль,НомерПоДаннымПоставщика); СтруктураРезультата.НомерПоДаннымПоставщика = Ответ.Id; СтруктураРезультата.ДатаПоДаннымПоставщика = Ответ.CreationDate; СтруктураРезультата.НомерПоступления = Ответ.InvoiceId; СтруктураРезультата.ДатаПоступления = Ответ.InvoiceDate; СтруктураРезультата.Валюта = Ответ.Currency; СтруктураРезультата.Статус = Ответ.Status; СтруктураРезультата.ДатаАктуальности = ТекущаяДата(); Для каждого СтрокаОтвета Из Ответ.Lines.OrderLineDto
Цикл НоваяСтрока = ТаблицаЗначений.Добавить(); Если ЗаполнятьПрефикс
Тогда НоваяСтрока.Идентификатор = Префикс + СокрЛП(СтрокаОтвета.ItemId); КонецЕсли; НоваяСтрока.Наименование = СокрЛП(СтрокаОтвета.Name); НоваяСтрока.Запрошено = СтрокаОтвета.ReservedQuantity; НоваяСтрока.Зарезервировано = СтрокаОтвета.Quantity; НоваяСтрока.Цена = СтрокаОтвета.UnitPrice; НоваяСтрока.Сумма = СтрокаОтвета.TotalPrice; НоваяСтрока.НомерГТД = СокрЛП(СтрокаОтвета.GtdNumber); НоваяСтрока.СтранаПроисхождения = СокрЛП(СтрокаОтвета.GtdCountry); КонецЦикла; СтруктураРезультата.Товары = ТаблицаЗначений;; Возврат СтруктураРезультата; КонецФункции
Создание заказа и добавление товаров в заказ
Функция ТранспортЗаказовВТТ(МассивДляВыгрузки) СтруктураАвторизации = ПолучитьСтруктуруАвторизацииВТТ(); ВСОпределение = Новый WSОпределения(СтруктураАвторизации.СсылкаWSDL); ВССервис = ВСОпределение.Сервисы.Получить("PortalService"); ВТочкаВхода = ВССервис.ТочкиПодключения.Получить("BasicHttpBinding_IPortalService"); ВФункцияСоздания = ВТочкаВхода.Интерфейс.Операции.Получить("CreateOrder"); ВфункцияДобавления = ВТочкаВхода.Интерфейс.Операции.Получить("AddItem"); Фабрика = ВСОпределение.ФабрикаXDTO; ВСПрокси = Новый WSПрокси(ВСОпределение, "PortalService", "BasicHttpBinding_IPortalService"); ТипОбъектаСозданияLine = ВФункцияСоздания.Параметры.Получить("lines").Тип; ТипОбъектаСозданияСтрока = ТипОбъектаСозданияLine.Свойства.Получить("OrderLineCreationDto").Тип; ТипОбъектаДобавленияItem = ВфункцияДобавления.Параметры.Получить("item").Тип;
КонецФункции
PHP
Получение настроек
$wsdl_url='http://api.vtt.ru:8048/Portal.svc?singleWsdl'; //ссылка для обращения к API
$login='XXXXXXXXX'; // логин $password='YYYYYYYYY'; // пароль
Считывание данных
$data = load_data(); write_to_log("Сведения о товарах получены. Всего товаров ".count($data->GetItemsResult->ItemDto)); function load_data() { global $wsdl_url, $login, $password; $params=array("login" => $login , "password" => $password); try { $client = new SoapClient($wsdl_url, $params); $dates = $client->GetItems($params); return $dates; } catch (SoapFault $E) { write_to_log("Ошибка: ".$E->faultstring); die; } }
Обработка товаров
function load_products() { global $data $items = $data['GetItemsResult']['ItemDto']; for ($offset=0;$offset<count($items);$offset++){ $item = $items[$offset]; $id = $item['Id']; $name = htmlspecialchars($item['Name']); $tag = $item['Name']; $sku = $item['Id']; $product_weight = $item['Weight']; // вес в килограммах $purchase_price = $item['Price']; $quantity = $item['AvailableQuantity']; $photo = $item['PhotoUrl']; $description = strtr($item['Description']; $Brand = $item['Brand']; $Vendor = $item['Vendor']; // сохранение данных в базе данных сайта ... }