Примеры кода реализации работы с 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'];
// сохранение данных в базе данных сайта
...
}
Создание заказа
function create_order()
{
global $wsdl_url, $login, $password;
$order_lines = [
["itemId" => "123456", "quantity" => 1],
["itemId" => "456789", "quantity" => 2]
];
$params=array("login" => $login , "password" => $password, "lines" => $order_lines);
$client = new SoapClient($wsdl_url, $params);
$orderID = $client->CreateOrder($params);
if (is_null($orderID)) {
die("Ошибка создания заказа")
}
return $orderID;
}
HTTP
Создание заказа
POST http://api.vtt.ru:8048/Portal.svc Content-Type: text/xml; charset=utf-8 SOAPAction: "http://portal.vtt.ru/IPortalService/CreateOrder" <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CreateOrder xmlns="http://portal.vtt.ru">
<login>xxx</login>
<password>xxx</password>
<lines xmlns:d="http://portal.vtt.ru/data">
<d:OrderLineCreationDto>
<d:ItemId>12345</d:ItemId>
<d:Quantity>12</d:Quantity>
</d:OrderLineCreationDto>
</lines>
</CreateOrder>
</soap:Body>
</soap:Envelope>
Получение информации о заказе со списком товарных позиций
Content-Type: text/xml; charset=utf-8 SOAPAction: "http://portal.vtt.ru/IPortalService/GetOrderWithLines"; <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; <soap:Body> <GetOrderWithLines xmlns="http://portal.vtt.ru"; <login>xxx</login> <password>xxx</password> <orderId>123456</orderId> </GetOrderWithLines> </soap:Body> </soap:Envelope>