Назад к описанию библиотеки

Инструкция использования
SOAP-сервиса AvtoTO для технических специалистов (расширенная)

Редакция 18.09.2023

За изменениями в документации Вы можете следить в Telegram, вступив в группу @avtoto_API

Порядок подключения сервиса для оптовых клиентов:

Если Вы арендуете или купили готовый интернет-магазин, обратитесь к продавцу с просьбой подключить поставщика AvtoTO, у большинства разработчиков наш сервис уже реализован. Если Вы самостоятельно разрабатывали интернет-магазин, необходимо ознакомить с данной инструкцией своих программистов.

После технической реализации, необходимо:

  1. Заключите договор-поставки. Для этого обратитесь в клиентский отдел любым удобным способом. Дальнейшие действия возможны только после подписания договора.
  2. Активируйте сервис и добавьте IP адрес своего сайта на странице настройка веб-сервиса.
  3. Выполните настройки на своём сайте: введите логин / пароль (как при авторизации на сайте) и номер (id) клиента (номер указан в разделе общая информация).

Порядок подключения сервиса для разработчиков ПО:

Если Вы представитель компании разработчика интернет-магазинов запчастей или решений на базе 1С, и весь трафик клиентов будет передаваться через Ваши сервера, необходимо прислать список IP адресов и информацию о компании (сайт, контактную информацию технических специалистов) на почту x@avtoto.su


Адреса WSDL-документов:

  1. Версия SOAP 1.0: https://www.avtoto.ru/services/search/soap.wsdl (основной)
  2. Версия SOAP 1.2: https://www.avtoto.ru/services/search/soap2.wsdl
  3. Версия SOAP для .NET клиентов: https://www.avtoto.ru/services/search/soap_dotnet.wsdl
    см. так же Дополнение для .NET разработчиков

Адрес точки API для URL запросов в формате JSON:

  1. https://www.avtoto.ru/?soap_server=json_mode
  2. cм. так же Дополнение для версии на cURL

Асинхронные вызовы:

  1. SearchStart - запуск поиска предложений
  2. SearchGetParts - получение результатов
  3. SearchGetParts2 - получение результатов (расширенная версия)

Список методов:

  1. GetBrandsByCode - поиск брендов по артикулу
  2. AddToBasket - добавление в корзину AvtoTO
  3. UpdateCountInBasket - изменение количества запчастей в корзине AvtoTO
  4. DeleteFromBasket - удаление из корзины AvtoTO
  5. CheckAvailabilityInBasket - проверка наличия в прайсах товара в корзине AvtoTO
  6. AddToOrdersFromBasket - добавление в заказы из корзины AvtoTO
  7. GetOrdersStatus - получение статусов заказов в системе AvtoTO
  8. GetStatSearch - получение статистики по проценкам и запросам брендов
  9. GetShippingList - получение списка отгрузок

Метод: SearchStart

Описание: Предназначен для запуска поиска запчастей по коду на сервере Avtoto.

Параметры запроса: В качестве входного параметра используется ассоциативный массив, со следующими элементами:

[*] — эти данные можно узнать зайдя на страницу Настройки после авторизации на сайте
[**] Список брендов можно получить с помощью метода GetBrandsByCode

Примечание: если бренд не указан, будет автоматически выбран самый популярный и произведен поиск с учетом этого бренда.

Параметры ответа: Сервис возвращает ассоциативный массив, с элементами:


Метод: SearchGetParts

Описание: Предназначен для получения результатов поиска запчастей по коду на сервере Avtoto.

Параметры запроса: В качестве входного параметра используется ассоциативный массив, со следующими элементами:

Параметры ответа: Сервис возвращает многомерный массив, с элементами:

[*] — эти данные необходимо сохранить в Вашей системе, в дальнейшем они понадобятся для добавления запчастей в корзину


Метод: SearchGetParts2

Описание: Предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа.

Параметры запроса: В качестве входного параметра используется ассоциативный массив, со следующими элементами:

Параметры ответа: Сервис возвращает многомерный массив, с элементами:

[*] — эти данные необходимо сохранить в Вашей системе, в дальнейшем они понадобятся для добавления запчастей в корзину


Методы SearchStart и SearchGetParts позволяют организовать асинхронную передачу данных, помогая снизить нагрузку на Ваш и на наш сервер.

Метод SearchStart выдает идентификатор процесса поиска на сервере AvtoTO. Потом нужно отслеживать, не появился ли ответ с помощью метода SearchGetParts. Эта схема работы реализуется на Ajax: первый запрос запускает метод SearchStart, по его окончанию вызывается функция, которая с небольшим периодом (0.3 - 0.5 сек) проверяет наличие ответа. Когда ответ появился, она его выдает.

Если у Вас нет возможности использовать Ajax, то воспользуйтесь решением на PHP, которое описывается в инструкции к библиотеке сервиса AvtoTO.


Для того чтобы в результатах поиска были Б/У предложения, необходимо авторизоваться пользователем, от которого осуществляется запрос, на сайте.

Далее запустить поиск по любому коду, и на странице результата открыть окно "Настройки поиска".

Установить галочки "Показывать предложения по б/у запчастям" и "Транслировать б/у предложения в api сервис" в положение "вкл".

Нажать кнопку "Сохранить"


Метод: GetBrandsByCode

Описание: Предназначен для поиска списка брендов по артикулу запчасти

Параметры запроса: В качестве входного параметра используется ассоциативный массив со следующими элементами:

[*] — эти данные можно узнать зайдя на страницу Настройки после авторизации на сайте

Параметры ответа: Сервис возвращает многомерный массив с элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Параметры запроса
$params = array(
    'user_id' => 11111,
    'user_login' => 'UserLogin',
    'user_password' => 'UserPassword',
    'search_code' => '55555',
);

// Поиск
$result = $client->GetBrandsByCode($params);

// Обработка результата
if (isset($result['Brands']) && count($result['Brands'])>0) {
    echo 'Результат поиска по коду: '.$params['search_code'];
    echo 'Всего найдено:'.count($result['Brands']);

    foreach($result['Brands'] as $element) {
        // Здесь обрабатываем каждый элемент отдельно
        print_r($element);
    }
}

// Вывод ошибок
if (isset($result['Info']['Errors']) && count($result['Info']['Errors'])>0) {
    echo join(', ', $result['Info']['Errors']);
}
            

Примечание к методу GetBrandsByCode
Сервис поиска предложений будет работать в случае выполнения условия: сумма заказов / количество запросов > 20 после некоторого порога проценок.


Метод: AddToBasket

Описание: Добавляет запчасти в корзину

Параметры запроса: В качестве входного параметра необходим массив со следующей структурой:

Необходимо, чтобы количество для покупки Count не превышало максимальное количество MaxCount и соответствовало кратности заказа BaseCount

Параметры ответа: Сервис возвращает многомерный массив со следующими элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Запчасти для добавления в корзину
$elements_for_basket = array(
    0 => array(
        'Code' => 'Код запчасти',
        'Manuf' => 'Производитель',
        'Name' => 'Название запчасти',
        'Price' => 100.00,
        'Storage' => 'Склад',
        'Delivery' => 0,
        'BaseCount' => 1,
        'SearchID' => 1001,
        'RemoteID' => 452356,
        'Count' => 1,
        'PartId' => 5,
    )
);

// Параметры для добавления в корзину
$params_basket = array(
    'user' => array(
        'user_id' => 11111,
        'user_login' => 'UserLogin',
        'user_password' => 'UserPassword'
    ),
    'parts' => $elements_for_basket
);

// Добавление в корзину
$result = $client->AddToBasket($params_basket);

// Обработка результата
if ( isset($result['DoneInnerId']) && count($result['DoneInnerId']) > 0) {

    foreach($result['DoneInnerId'] as $element) {
        // Сохраняем $element['InnerID'] для дальнейшей работы с корзиной
        //...
    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: UpdateCountInBasket

Описание: Изменяет количество запчастей в корзине

Параметры запроса: В качестве входного параметра необходим массив со следующей структурой:

Параметры ответа: Сервис возвращает многомерный массив, со следующими элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Запчасти для обновления количества в корзине
$elements_for_update_count_in_basket = array(
    0 => array(
        'InnerID' => 56741135,
        'RemoteID' => 23789,
        'NewCount' => 5
    )
);

// Параметры для обновления количества в корзине
$params_basket = array(
    'user' => array(
        'user_id' => 11111,
        'user_login' => 'UserLogin',
        'user_password' => 'UserPassword'
    ),
    'parts' => $elements_for_update_count_in_basket
);

// Обновление количества в корзине
$result = $client->UpdateCountInBasket($params_basket);

// Обработка результата
if ( isset($result['Done']) && count($result['Done']) > 0) {

    foreach($result['Done'] as $element) {
        // Подтверждаем для $element['RemoteID'] новое количество запчастей в корзине
        //...
    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: DeleteFromBasket

Описание: Удаляет запчасти из корзины

Параметры запроса: В качестве входного параметра необходим массив со следующей структурой:

Параметры ответа: Сервис возвращает многомерный массив, со следующими элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Запчасти для удаления из корзины
$elements_for_delete = array(
    0 => array(
        'InnerID' => 56741135,
        'RemoteID' => 23789
    )
);

// Параметры для добавления в корзину
$params_basket = array(
    'user' => array(
        'user_id' => 11111,
        'user_login' => 'UserLogin',
        'user_password' => 'UserPassword'
    ),
    'parts' => $elements_for_delete
);

// Удаление из корзины
$result = $client->DeleteFromBasket($params_basket);

// Обработка результата
if ( isset($result['Done']) && count($result['Done']) > 0) {

    foreach($result['Done'] as $element) {
        // Помечаем $element['RemoteID'] как удаленный
        //...
    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: CheckAvailabilityInBasket

Описание: Проверяет запчасти в корзине AvtoTO на наличие в прайсах для дальнейшего заказа, а так же срок хранения в корзине.

Параметры запроса: В качестве входного параметра необходим массив со следующей структурой:

Необходимо, чтобы количество для покупки Count не превышало максимальное количество MaxCount, и соответствовало кратности заказа BaseCount

Параметры ответа: Сервис возвращает многомерный массив, со следующими элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Запчасти для добавления в заказы
$elements_for_orders = array(
    0 => array(
        'RemoteID' => 452356,
        'InnerID' => 5302355, // ID записи в корзине AvtoTO
        'Count' => 2
    ),

    1 => array(
        'RemoteID' => 452357,
        'InnerID' => 5302356
    )
);

// Параметры для проверки наличия
$params_orders = array(
    'user' => array(
        'user_id' => 11111,
        'user_login' => 'UserLogin',
        'user_password' => 'UserPassword'
    ),
    'parts' => $elements_for_orders
);

// Проверка наличия
$result = $client->CheckAvailabilityInBasket($params_orders);

// Обработка результата
if ( isset($result['PartsInfo'])) {

    foreach($result['PartsInfo'] as $element) {

        if($element['Availability'] == 1) {
            // Сохраняем $element['InnerID'] для дальнейшего добавления в заказы
        } else {
            // Этот $element['InnerID'] нельзя заказать
        }

    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: AddToOrdersFromBasket

Описание: Добавляет запчасти в заказы из корзины Avtoto

Параметры запроса: В качестве входного параметра необходим массив со следующей структурой:

Необходимо, чтобы количество для покупки Count не превышало максимальное количество MaxCount, и соответствовало кратности заказа BaseCount

Параметры ответа: Сервис возвращает многомерный массив, со следующими элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Запчасти для добавления в заказы
$elements_for_orders = array(
    0 => array(
        'RemoteID' => 452356,
        'InnerID' => 5302355, // ID записи в корзине AvtoTO
        'Count' => 2
    ),

    1 => array(
        'RemoteID' => 452357,
        'InnerID' => 5302356
    )
);

// Параметры для добавления в заказы
$params_orders = array(
    'user' => array(
        'user_id' => 11111,
        'user_login' => 'UserLogin',
        'user_password' => 'UserPassword'
    ),
    'parts' => $elements_for_orders
);

// Добавление в заказы
$result = $client->AddToOrdersFromBasket($params_orders);

// Обработка результата
if ( isset($result['DoneInnerId']) && count($result['DoneInnerId']) > 0) {

    foreach($result['DoneInnerId'] as $element) {
        // Сохраняем $element['InnerID'] для дальнейшей работы с заказами
        //...
    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: GetOrdersStatus

Описание: Проверка статуса заказа в системе AvtoTO

Параметры запроса: В качестве входного параметра необходим массив со следующей структурой:

Параметры ответа: Сервис возвращает многомерный массив, со следующими элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Запчасти для добавления в заказы
$elements_for_status = array(
    0 => array(
        'RemoteID' => 452356,
        'InnerID' => 6412257 // ID записи в заказах AvtoTO
    ),

    1 => array(
        'RemoteID' => 452357,
        'InnerID' => 6412258
    )

);

// Параметры для добавления в корзину
$params_status = array(
    'user' => array(
        'user_id' => 11111,
        'user_login' => 'UserLogin',
        'user_password' => 'UserPassword'
    ),
    'parts' => $elements_for_status
);

// Проверка статуса заказов
$result = $client->GetOrdersStatus($params_status);

// Обработка результата
if ( isset($result['OrdersInfo']) && count($result['OrdersInfo']) > 0) {

    foreach($result['OrdersInfo'] as $element) {
        echo 'Статус заказа '.$element['RemoteID'].' в системе AvtoTO (внутренний номер '.
        $element['InnerID'].'): '.$element['Info']['progress_text'];
        //...
    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: GetStatSearch

Описание: Предназначен для получения статистики проценок по всем объединенным регистрациям.

Параметры запроса: В качестве входного параметра используется ассоциативный массив, со следующими элементами:

Параметры ответа: Сервис возвращает ассоциативный массив, с элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Параметры для авторизации пользователя
$params_login = array(
    'user_id' => 11111,
    'user_login' => 'UserLogin',
    'user_password' => 'UserPassword'
);

// Получение статистики по проценкам и поиску брендов
$result = $client->GetStatSearch($params_login);

// Обработка результата по проценкам
if ( isset($result['StatInfo']) && count($result['StatInfo']) > 0) {

    // Обработка результата по проценкам

    if (isset($result['StatInfo']['SearchHistory']) && is_array($result['StatInfo']['SearchHistory'])) {
        foreach($result['StatInfo']['SearchHistory'] as $searchHistory) {
            echo 'День - '.$searchHistory['Day'].', количество проценок - '.$searchHistory['SearchCount'];
            //...
        }
    }
}

// Обработка результата по брендам
if ( isset($result['BrandsStatInfo']) && count($result['BrandsStatInfo']) > 0) {

    // Обработка результата по брендам

    if (isset($result['BrandsStatInfo']['SearchHistory']) && is_array($result['BrandsStatInfo']['SearchHistory'])) {
        foreach($result['BrandsStatInfo']['SearchHistory'] as $searchHistory) {
            echo 'День - '.$searchHistory['Day'].', количество запросов - '.$searchHistory['SearchCount'];
            //...
        }
    }
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Метод: GetShippingList

Описание: Предназначен для получения списка отгрузок.

Параметры запроса: В качестве входного параметра используется ассоциативный массив, со следующими элементами:

Параметры ответа: Сервис возвращает ассоциативный массив, с элементами:

Пример запроса и обработки ответа:


$client = new SoapClient("https://www.avtoto.ru/services/search/soap.wsdl",
array('soap_version' => SOAP_1_1));

// Параметры для авторизации пользователя
$params_login = array(
    'user_id' => 11111,
    'user_login' => 'UserLogin',
    'user_password' => 'UserPassword'
);
$date_from = date('d.m.Y', time() - (3600*24*14));
$date_to = date('d.m.Y');
$page_num = 1;
// Получение списка отгрузок
$result = $client->GetShippingList([
    'user' => $params_login,
    'from' => $date_from,
    'to' => $date_to,
    'page_num' => $page_num,
]);

// Обработка результата
if ( isset($result['Shippings']) && count($result['Shippings']) > 0) {

    // Обработка результата

    //...
}

// Обработка ошибок
if (isset($result['Errors']) && count($result['Errors'])>0) {
    print_r($result['Errors']);
}

Дополнение для .NET разработчиков

Из-за проблем совместимости существуюших WSDL, пригодных для PHP SOAP-клиентов, мы сделали отдельный WSDL для работы с .NET SOAP-клиентами.

Входные параметры для всех методов в этой версии — массивы, аналогичные описываемым в этой документации, только запакованные в JSON (строка). Возвращются данные так же в формате JSON.

Метод SearchGetParts соответствует описанию метода SearchGetParts2.

Ниже приведен пример метода SearchStart.


using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace ConsoleApp
{
    class Program
    {
        //ТОЧКА ВХОДА
        static void Main(string[] args)
        {
            AvtotoParts av = new AvtotoParts();

            //параметры запроса для метода SearchStart
            string code = "C110";
            string brand = "DOLZ";

            //параметры запроса для метода SearchGetParts
            Dictionary search_params = new Dictionary();

            //Запускаем SearchStart, получаем process_id
            search_params = av.SearchStart(code, brand);

            Console.WriteLine("Запускаем поиск для получения process_id: av.SearchStart");
            Console.WriteLine("process_id - " + search_params["process_id"]);

            Console.WriteLine("Начинаем запросы к серверу: av.SearchGetParts");

            //используя результат с process_id, начинаем посылать запросы на сервер для проверки результатов
            av.SearchGetParts(search_params);

            Console.WriteLine("end");
            Console.ReadLine();
        }
    }

    class AvtotoParts
    {
        private int[] response_wait_first_periods = { 1500, 1500 }; //первые 2 запроса по 1,5 сек
        private int response_wait_period = 1000; //оставльные запросы по 1 сек
        private int search_extension_time_limit = 10000; //максимальное время запросов 10 сек

        public AvtotoParts()
        {
            Console.WriteLine("Первые запросы: по " + String.Join(", ", response_wait_first_periods) + " миллисекунд");
            Console.WriteLine("Остальные запросы: по " + response_wait_period.ToString() + " миллисекунд");
            Console.WriteLine("Общее время выполнения " + search_extension_time_limit.ToString() + " миллисекунд");
        }

        /// 
        /// Метод, который послыает запросы на сервер и получает список запчастей
        /// 
        /// 
        public void SearchGetParts(Dictionary search_params)
        {
            //класс, который позволяет измерить точное количество времени
            Stopwatch elapsed = new Stopwatch();
            try
            {
                //запускаем измерение пройденного времени
                elapsed.Start();

                //количество запросов, которое уже было осуществлено
                int query_count = 0;
                while (elapsed.ElapsedMilliseconds < this.search_extension_time_limit)
                {
                    int sleep_time = this.response_wait_period;
                    if (this.response_wait_first_periods.Length > query_count)
                    {
                        sleep_time = this.response_wait_first_periods[query_count];
                    }

                    //останавливаем поток на N миллисекунд
                    System.Threading.Thread.Sleep(sleep_time);
                    query_count++;

                    //ЗАПРОС ЗАПЧАСТЕЙ
                    bool good_result = false;
                    this.SearchPartsFromServer(search_params, elapsed.ElapsedMilliseconds, query_count, ref good_result);

                    /*if (good_result == true) { //ПОИСК вернул результат
                        break;
                    }*/
                }

            }
            catch (Exception ex)
            {
                throw new Exception("err", ex);
            }
            finally
            {
                elapsed.Stop();
            }
        }

        /// 
        /// ПОИСК ЗАПЧАСТЕЙ (ЗАПРОС К SearchGetParts2)
        /// 
        /// 
        /// 
        /// 
        /// 
        private void SearchPartsFromServer(Dictionary search_params, long ElapsedMilliseconds, int count, ref bool good_result)
        {
            //TODO Тут реализован метод запроса к нашему серверу к методу SearchGetParts2
            Console.WriteLine(String.Format("Запрос №{1}. Прошло {0} миллисекунд", ElapsedMilliseconds, count)); //сколько прошло миллисекунд

            /*
             * СТАРЫЙ МЕТОД ИЗ СПРАВКИ
                [WebMethod]
                [System.Web.Script.Services.ScriptMethod]
                public static string SearchStart(string code, int ch) {
                    /// ***-Ваши данные
                    string user_id = "";
                    string user_login = "";
                    string user_password = "";
                    /// ***-Ваши данные
                    string ret="-1";
                    try
                    {
                        Regex rgxCode = new Regex("[^0-9a-zа-я]");
                        code = rgxCode.Replace(code.ToLower(), "");
                        var ws = new avtoto.AvtoTOService();
                        string isAnalog = (ch == 1 ? "on" : "'off'");

                        string retJson = ws.SearchStart(
                            @"{""user_id"":""" + user_id + @""",""user_login"":"""
                            + user_login + @""",""user_password"":""" + user_password
                            + @""",""search_code"":""" + code + @""",""search_cross"":""" + isAnalog + @"""}"
                        );

                        var json = new JavaScriptSerializer().DeserializeObject(retJson) as Dictionary;
                        if (json == null) throw new NullReferenceException();
                        ret = (string)json["ProcessSearchId"];
                    }
                    catch (Exception ex)
                    {
                        Common.logsData(ex.ToString());
                        return null;
                    }
                    return ret;
                }
            */
        }

        /// 
        /// Первый запрос поиска, который возвращает process_id
        /// 
        /// 
        /// 
        /// 
        public Dictionary SearchStart(string code, string brand)
        {
            Dictionary return_params = new Dictionary();

            //TODO Тут реализован метод запроса к нашему серверу к методу SearchStart
            return_params.Add("process_id", Guid.NewGuid().ToString());

            return return_params;
        }
    }
}


Дополнение для версии на cURL

Из-за проблем совместимости существуюших WSDL, пригодных для PHP SOAP-клиентов, мы сделали отдельный API для работы с форматом JSON через HTTP запросы.

Входные параметры для всех методов в этой версии аналогичны описываемым в этой документации, только запакованные в JSON (строка). Возвращются данные так же в формате JSON.

Ниже приведен пример метода SearchStart.


//подготавливаем данные для запроса (исходя из документации)
$data = array(
    'search_code' => 'C110',
    'search_cross' => 'off',
    'user_id' => 1000000,
    'user_login' => 'login',
    'user_password' => 'pass',
);
//конвертируем подготовленные данные в JSON строку
$data_string = json_encode($data);

/**
    * создаем массив, который будет передан с помощью cURL
    * первое поле массива data - это НАЗВАНИЕ МЕТОДА (исходя из документации)
    * второе поле массива data - это ДАННЫЕ В JSON
    * это необходимо для того, что например при добавлении в корзину в используем
    * вложенные массивы. SOAP умеет вложенные массивы, а POST нет.
*/
$request = array(
    'action' => 'SearchStart',
    'data' => $data_string,
);

//делаем запрос к серверу
$result = curl_start($request);
function curl_start($request) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,            "https://www.avtoto.ru/?soap_server=json_mode" );
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT,        10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_POST,           true);
    curl_setopt($ch, CURLOPT_POSTFIELDS,     $request);

    $result = curl_exec($ch);

    //конвертируем вернувшеюся JSON строку в массив и возвращаем
    return json_decode($result, true);
}

Ниже приведен пример массива $data для метода GetOrdersStatus.


//подготавливаем данные для запроса (исходя из документации)
$data = array(
    'user' => array(
        'user_id' => 1000000,
        'user_login' => 'login',
        'user_password' => 'pass',
    ),
    'parts' => array(
        array('InnerID' => 700001, 'RemoteID' => 800001),
        array('InnerID' => 700002, 'RemoteID' => 800002),
        array('InnerID' => 700003, 'RemoteID' => 800003),
        array('InnerID' => 700004, 'RemoteID' => 800004),
    ),
);
//конвертируем подготовленные данные в JSON строку
$data_string = json_encode($data);

/**
    * создаем массив, который будет передан с помощью cURL
    * первое поле массива item - это НАЗВАНИЕ МЕТОДА (исходя из документации)
    * второе поле массива data - это ДАННЫЕ В JSON
    * это необходимо для того, что например при добавлении в корзину в используем
    * вложенные массивы. SOAP умеет вложенные массивы, а POST нет.
*/
$request = array(
    'action' => 'GetOrdersStatus',
    'data' => $data_string,
);

//делаем запрос к серверу
$result = curl_start($request);
function curl_start($request) {
    ...
}

К списку методов