Порядок подключения сервиса для оптовых клиентов:
Если Вы арендуете или купили готовый интернет-магазин, обратитесь к продавцу с просьбой подключить поставщика AvtoTO, у большинства разработчиков наш сервис уже реализован. Если Вы самостоятельно разрабатывали интернет-магазин, необходимо ознакомить с данной инструкцией своих программистов.
После технической реализации, необходимо:
- Заключите договор-поставки. Для этого обратитесь в клиентский отдел любым удобным способом. Дальнейшие действия возможны только после подписания договора.
- Активируйте сервис и добавьте IP адрес своего сайта на странице настройка веб-сервиса.
- Выполните настройки на своём сайте: введите логин / пароль (как при авторизации на сайте) и номер клиента (номер указан в разделе общая информация).
Порядок подключения сервиса для разработчиков ПО:
Если Вы представитель компании разработчика интернет-магазинов запчастей или решений на базе 1С, и весь трафик клиентов будет передаваться через Ваши сервера, необходимо прислать список IP адресов и информацию о компании (сайт, контактную информацию технических специалистов) на почту x@avtoto.su
Последние версии библиотек и примеров использования Вы можете скачать здесь: ссылка для скачивания .
Ниже представлено описание работы с библиотекой сервиса AvtoTO avtoto_parts.class.php, которая в своей основе использует методы, описанные в технической документации к сервису. Чтобы просмотреть подробную техническую документацию по работе SOAP-методов, перейдите по ссылке.
В большинстве случаев для организации взаимодействия с сервисом AvtoTO вам будет достаточно скачать библиотеку avtoto_parts.class.php, подключить ее к Вашей системе и воспользоваться готовыми методами.
Пример использования библиотеки Вы можете посмотреть в файле sample.php
Последние версии библиотек и примеров (cURL + JSON) использования Вы можете скачать здесь: ссылка для скачивания .
Файлы:
- Библиотека: avtoto_parts.curl.json.class.php
- Пример использования: sample_curl_json.php
Порядок взаимодействия:
- Инициализация
- Поиск предложений по артикулу запчасти
- Поиск предложений по артикулу запчасти или по артикулу и бренду
- Поиск брендов по артикулу запчасти
- Работа с корзиной: добавление, изменение кол-ва и удаление
- Оформление заказа и проверка его статуса
- Получение статистики по проценкам и поиску брендов
- Получение списка отгрузок
Инициализация.
//Загружаем библиотеку
//Заменить /path/to/library/ на реальный путь
include('/path/to/library/avtoto_parts.class.php');
$login_params = array( //Данные аккаунта на сайте www.avtoto.ru
'user_id' => '1234567',
'user_login' => 'my_login',
'user_password' => 'my_password'
);
//Создание экземпляра класса avtoto_parts
$avtoto = new avtoto_parts($login_params);
//Элементы для удаления из корзины
$elements_for_delete_from_basket = array();
//Элементы для оформления заказа
$elements_for_add_to_orders = array();
//Элементы для проверки статуса
$elements_for_get_status = array();
Поиск предложений по артикулу запчасти.
Используемые методы:
Метод avtoto_parts :: get_parts |
Раскрыть описание ↓ |
$search_analogs = 'on'; //Искать ('on') или нет ('off') аналоги артикула
$artilce = 'PF3043'; //Артикул искомых деталей
$limit = 2000; //Ограничение на выдачу
//Максимальное время выполнения 5 сек
$avtoto->set_search_extension_time_limit(5);
$data = $avtoto->get_parts($artilce, $search_analogs, $limit);
$errors = $avtoto->get_errors();
$search_id = 0;
if(!$errors && $data) {
//Обрабатываем данные
if(isset($data['Parts']) && $data['Parts']) {
//Обрабатываем список предложений
}
if(isset($data['Info']['SearchId'])) {
//ID поиска на сервере AvtoTO
$search_id = $data['Info']['SearchId'];
}
if(isset($data['Info']['Errors']) && $data['Info']['Errors']) {
//В процессе выполнения запроса на сервере AvtoTO возникли ошибки
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
Поиск предложений по артикулу запчасти или по артикулу и бренду.
Используемые методы:
Метод avtoto_parts :: get_parts_brand |
Раскрыть описание ↓ |
$artilce = 'PF3043'; //Артикул искомых деталей
$brand = 'FILTRON'; //Бренд искомых деталей
$limit = 2000; //Ограничение на выдачу
$analogs = 'on';
//Максимальное время выполнения 5 сек
$avtoto->set_search_extension_time_limit(5);
$data = $avtoto->get_parts_brand($artilce, $brand, $limit, $analogs);
$errors = $avtoto->get_errors();
$search_id = 0;
if(!$errors && $data) {
//Обрабатываем данные
if(isset($data['Parts']) && $data['Parts']) {
//Обрабатываем список предложений
}
if(isset($data['Info']['SearchId'])) {
//ID поиска на сервере AvtoTO
$search_id = $data['Info']['SearchId'];
}
if(isset($data['Info']['Errors']) && $data['Info']['Errors']) {
//В процессе выполнения запроса на сервере AvtoTO возникли ошибки
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
Поиск брендов по артикулу запчасти.
Используемые методы:
Метод avtoto_parts :: get_brands_by_code |
Раскрыть описание ↓ |
$artilce = 'PF3043'; //Артикул искомых деталей
//Максимальное время выполнения 5 сек
$avtoto->set_search_extension_time_limit(5);
$data = $avtoto->get_brands_by_code($artilce);
$errors = $avtoto->get_errors();
if(!$errors && $data) {
//Обрабатываем данные
if(isset($data['Brands']) && $data['Brands']) {
//Обрабатываем список предложений
}
if(isset($data['Info']['Errors']) && $data['Info']['Errors']) {
//В процессе выполнения запроса на сервере AvtoTO возникли ошибки
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
Работа с корзиной: добавление, изменение кол-ва и удаление.
Используемые методы:
Метод avtoto_parts :: add_to_basket |
Раскрыть описание ↓ |
Метод avtoto_parts :: update_count_in_basket |
Раскрыть описание ↓ |
Метод avtoto_parts :: delete_from_basket |
Раскрыть описание ↓ |
if($search_id && isset($data['Parts'])) {
//Подготавливаем данные для добавления
//Для примера берем первые два результата поиска из примера выше
$work_part1 = $data['Parts'][0];
$work_part2 = $data['Parts'][1];
//Им необходимо присвоить уникальный ID в Вашей системе,
//чтобы потом можно было получить по нему отчет.
$work_part1['RemoteID'] = 345345;
$work_part2['RemoteID'] = 345346;
//Чтобы мы могли сопоставить запрос на добавление с данными в кэше поиска,
//необходимо присвоить ID поиска каждой детале.
$work_part1['SearchID'] = $search_id;
$work_part2['SearchID'] = $search_id;
//Присваиваем номер детали из множества данного поиска
$work_part1['PartId'] = $work_part1['AvtotoData']['PartId'];
$work_part2['PartId'] = $work_part2['AvtotoData']['PartId'];
//Указываем количество для добавления в корзину
$work_part1['Count'] = 1;
$work_part2['Count'] = 3;
//Объединяем запчасти в один массив
$parts = array ( $work_part1, $work_part2 );
//Добавление в корзину
$data = $avtoto->add_to_basket($parts);
if(!$errors && $data) {
//Обрабатываем данные
if(isset($data['DoneInnerId']) && $data['DoneInnerId']) {
//Обрабатываем список предложений
foreach($data['DoneInnerId'] as $added_part) {
//Сохраняем ID в корзине на сервере AvtoTO в своей системе
$our_id = $added_part['RemoteID'];
$avtoto_id = $added_part['InnerID'];
//Сохраняем, чтобы в дальнейшем могли удалить
//из корзины или оформить заказ
//....
}
//Для удаления из корзины
//(для примера берем первый элемент)
$elements_for_delete_from_basket[] = $data['DoneInnerId'][0];
//Для изменения кол-ва в корзине и оформления заказа
//(для примера берем второй элемент)
if(isset($data['DoneInnerId'][1])) {
$elem = $data['DoneInnerId'][1];
//Оформление заказа
//Необходимо указать кол-во
$elem['Count'] = 1;
$elements_for_add_to_orders[] = $elem;
//Изменение кол-ва
//Новое кол-во
$elem['NewCount'] = 6;
$elements_for_update_count_in_basket[] = $elem;
}
}
if(isset($data['Errors']) && $data['Errors']) {
//В процессе выполнения запроса на сервере AvtoTO возникли ошибки
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
}
//Изменение кол-ва в корзины
if( $elements_for_update_count_in_basket ) {
$data = $avtoto->update_count_in_basket($elements_for_update_count_in_basket);
$errors = $avtoto->get_errors();
if(!$errors && $data) {
//Обрабатываем данные
if ( isset($data['Done']) && count($data['Done']) > 0) {
foreach($data['Done'] as $element) {
//...
}
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
}
//Удаление из корзины
if( $elements_for_delete_from_basket ) {
$data = $avtoto->delete_from_basket($elements_for_delete_from_basket);
$errors = $avtoto->get_errors();
if(!$errors && $data) {
//Обрабатываем данные
if ( isset($data['Done']) && count($data['Done']) > 0) {
foreach($data['Done'] as $element) {
//...
}
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
}
Оформление заказа и проверка его статуса.
Используемые методы:
Метод avtoto_parts :: check_availability_in_basket |
Раскрыть описание ↓ |
Метод avtoto_parts :: add_to_orders_from_basket |
Раскрыть описание ↓ |
Метод avtoto_parts :: get_orders_status |
Раскрыть описание ↓ |
//Оформление заказа
if( $elements_for_add_to_orders ) {
$data = $avtoto->check_availability_in_basket($elements_for_add_to_orders);
$availability_orders_ids = array();
if($data) {
$availability_orders_ids = array();
foreach($data['PartsInfo'] as $row) {
if(isset($row['Availability']) && (bool)$row['Availability'] && isset($row['InnerID'])) {
$availability_orders_ids[] = $row['InnerID'];
}
}
}
//Формируем список доступных для заказа позиций
$elements_for_add_to_orders_avail = array();
foreach($elements_for_add_to_orders as $element) {
if(in_array($element['InnerID'],$availability_orders_ids)) {
$elements_for_add_to_orders_avail[] = $element;
}
}
//Очищаем начальный список
unset($elements_for_add_to_orders);
//В этом месте может быть оплата заказа на Вашем сайте
$data = $avtoto->add_to_orders_from_basket($elements_for_add_to_orders_avail);
$errors = $avtoto->get_errors();
if(!$errors && $data) {
//Обрабатываем данные
if(isset($data['DoneInnerId']) && $data['DoneInnerId']) {
foreach($data['DoneInnerId'] as $part) {
//Сохраняем новый ID заказа в оформленных заказов
$order['InnerID'] = $part['InnerID'];
$order['RemoteID'] = $part['RemoteID'];
//Для проверки статуса
$elements_for_get_status[] = $order;
}
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
}
//Проверка статуса
if( $elements_for_get_status ) {
$data = $avtoto->get_orders_status($elements_for_get_status);
$errors = $avtoto->get_errors();
if(!$errors && $data) {
//Обрабатываем данные
foreach($data['OrdersInfo'] as $order) {
//Заказ в системе AvtoTO
$order['InnerID'];
//Общий статус
$order['Info']['progress'];
//Частичные статусы
if($order['Info']['sub_progress']) {
foreach($order['Info']['sub_progress'] as $sub_progress_int => $count) {
//Количество товара
$count;
//В статусе
$avtoto->get_progress_text($sub_progress_int);
}
}
}
} else {
if($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
}
Получение статистики по проценкам.
Используемые методы:
Метод avtoto_parts :: get_stat_search |
Раскрыть описание ↓ |
$data = $avtoto->get_stat_search();
$errors = $avtoto->get_errors();
if (!$errors && $data) {
//обрабатываем информацию о проценках
if (isset($data['StatInfo']['SearchHistory']) &&
is_array($data['StatInfo']['SearchHistory']) &&
count($data['StatInfo']['SearchHistory'])!=0) {
//обрабатываем информацию о количестве проценок по дням
}
if (isset($data['BrandsStatInfo']['SearchHistory']) &&
is_array($data['BrandsStatInfo']['SearchHistory']) &&
count($data['BrandsStatInfo']['SearchHistory'])!=0) {
//обрабатываем информацию о количестве запросов по дням
}
} else {
if ($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}
Получение списка отгрузок.
Используемые методы:
Метод avtoto_parts :: get_shipping_list |
Раскрыть описание ↓ |
$date_from = date('d.m.Y', time() - (3600*24*14));
$date_to = date('d.m.Y');
$page_num = 1;
$data = $avtoto->get_shipping_list($date_from, $date_to, $page_num);
$errors = $avtoto->get_errors();
if (!$errors && $data) {
//обрабатываем информацию об отгрузках
if (isset($data['Shippings']) &&
is_array($data['Shippings']) &&
count($data['Shippings'])!=0) {
//обрабатываем информацию об отгрузках
}
} else {
if ($errors) {
//Ошибка на нашей стороне
} else {
//Ответ не получен
}
}