Примеры кода реализации работы с API

Получение информации о заказе со списком товарных позиций

Функция ТранспортЗаказовОтЭСО(Знач СтруктураРезультата,Знач ТаблицаЗначений, НомерПоДаннымПоставщика, ЗаполнятьПрефикс = Истина, Префикс, ПодготовитьДанныеДля1С77 = Ложь)

    СтруктураАвторизации = ПолучитьСтруктуруАвторизацииЭСО();
 
ВСОпределение = Новый WSОпределения(СтруктураАвторизации.СсылкаWSDL);     ВССервис = ВСОпределение.Сервисы.Получить("PortalService");     ВТочкаВхода = ВССервис.ТочкиПодключения.Получить("BasicHttpBinding_IPortalService");     ВФункция = ВТочкаВхода.Интерфейс.Операции.Получить("GetOrderWithLines");     ВСПрокси = Новый WSПрокси(ВСОпределение,"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.esocctv.ru:8084/.svc?singleWPortalsdl';     //ссылка для обращения к 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.esocctv.ru:8084/Portal.svc?singleWsdl

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>

Получение информации о заказе со списком товарных позиций

POST http://api.vtt.ru:8048/Portal.svc

 Content-Type: text/xml; charset=utf-8
 SOAPAction: "http://portal.vtt.ru/IPortalService/GetOrderWithLines"
 
 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
   <soap:Body>
     <GetOrderWithLines xmlns="http://portal.vtt.ru&quot;&gt;
       <login>xxx</login>
       <password>xxx</password>
       <orderId>123456</orderId>
     </GetOrderWithLines>
   </soap:Body>
</soap:Envelope>