За изменениями в документации Вы можете следить в Telegram, вступив в группу @avtoto_API
Порядок подключения сервиса для оптовых клиентов:
Если Вы арендуете или купили готовый интернет-магазин, обратитесь к продавцу с просьбой подключить поставщика AvtoTO, у большинства разработчиков наш сервис уже реализован. Если Вы
самостоятельно разрабатывали интернет-магазин, необходимо ознакомить с данной инструкцией своих программистов.
После технической реализации, необходимо:
Заключите договор-поставки. Для этого обратитесь в клиентский
отдел любым удобным способом. Дальнейшие действия возможны только после подписания договора.
Активируйте сервис и добавьте IP адрес своего сайта на странице общая информация во вкладке "настройка веб-сервиса".
Выполните настройки на своём сайте: введите логин / пароль (как при авторизации на сайте) и номер клиента
(номер указан в разделе общая информация).
Порядок подключения сервиса для разработчиков ПО:
Если Вы представитель компании разработчика интернет-магазинов запчастей или решений на базе 1С, и весь трафик
клиентов будет передаваться через Ваши сервера, необходимо прислать список IP адресов и информацию о компании
(сайт, контактную информацию технических специалистов) на почту x@avtoto.su
Последние версии библиотек и примеров использования Вы можете скачать здесь: ссылка для
скачивания.
Ниже представлено описание работы с библиотекой сервиса AvtoTOavtoto_parts.class.php, которая в своей основе использует методы, описанные в
технической документации к сервису. Чтобы просмотреть подробную техническую
документацию по работе SOAP-методов, перейдите по ссылке.
В большинстве случаев для организации взаимодействия с сервисом AvtoTO вам
будет достаточно скачать библиотеку avtoto_parts.class.php, подключить ее к Вашей
системе и воспользоваться готовыми методами.
Пример использования библиотеки Вы можете посмотреть в файле sample.php
Для клиентов, которым по каким-то причинам не подходит реализация взаимодействия через SOAP, мы реализовали API,
который работает
по HTTP протоколу с синтаксисом URL. В тестовом примере взаимодействие реализовано через библиотеку cURL
(формат данных JSON).
С описанием синтаксиса URL запросов и примерами использования библиотеки Вы можете ознакомиться в технической документации (HTTP)
Последние версии библиотек и примеров (cURL + JSON) использования Вы можете скачать здесь:
ссылка для
скачивания.
Описание:
Предназначен для поиска предложений по артикулу запчасти
Входные параметры:
Артикул искомой запчасти, минимум 3 символа (тип: строка)
Искать в аналогах или нет (тип: строка, 'on' или 'off')
Параметры ответа:
Сервис возвращает многомерный массив, с элементами:
Parts - Список запчастей, найденных по запросу - индексированный массив, с упорядоченными
целочисленными ключами, начиная с 0. Каждый элемент этого массива содержит информацию о конкретной
детали и представляет из себя ассоциативный массив. Свойства детали:
Code* - Код детали
Manuf* - Производитель
Name* - Название
Price - Цена
Storage* - Склад
Delivery* - Срок доставки
MaxCount - Максимальное кол-во для заказа, остаток по складу. Значение "-1" - означает
"много" или "неизвестно".
BaseCount* - Кратность заказа
BeingUsed - Значение 1 - означает что предложение Б/У
Availability - Значение 1 - означает что предложение со склада наличия
StorageDate - Дата обновления склада
DeliveryPercent - Процент успешных закупок из общего числа заказов
BackPercent - Процент удержания при возврате товара (при отсутствии
возврата поставщику возвращается значение "-1")
AvtotoData - Массив, со след. элементами:
PartId* - Номер запчасти в списке результата поиска
Info - Общая информация по запросу, массив, содержащий 2 элемента:
Errors - Массив ошибок, возникший в процессе поиска
SearchID* - Уникальный идентификатор запроса поиска, возвращается в случае удачного
поиска
[*] — эти данные необходимо сохранить в Вашей системе, в дальнейшем они понадобятся для
добавления запчастей в корзину
$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 {
//Ответ не получен
}
}
Поиск предложений по артикулу запчасти или по артикулу и бренду
Описание:
Предназначен для поиска предложений по артикулу запчасти
Входные параметры:
Артикул искомой запчасти, минимум 3 символа (тип: строка)
Бренд искомой запчасти, минимум 2 символа (опционально) (тип: строка). Список брендов
можно получить с помощью метода avtoto_parts :: get_brands_by_code
Лимит возвращаемых записей (тип: число)
Искать в аналогах или нет (тип: строка, 'on' или 'off')
Примечание: если бренд не указан, будет автоматически выбран самый популярный и произведен поиск с
учетом этого бренда.
Параметры ответа:
Сервис возвращает многомерный массив, с элементами:
Parts - Список запчастей, найденных по запросу - индексированный массив, с упорядоченными
целочисленными ключами, начиная с 0. Каждый элемент этого массива содержит информацию о конкретной
детали и представляет из себя ассоциативный массив. Свойства детали:
Code* - Код детали
Manuf* - Производитель
Name* - Название
Price - Цена
Storage* - Склад
Delivery* - Срок доставки
MaxCount - Максимальное кол-во для заказа, остаток по складу. Значение "-1" - означает
"много" или "неизвестно".
BaseCount* - Кратность заказа
BeingUsed - Значение 1 - означает что предложение Б/У
Availability - Значение 1 - означает что предложение со склада наличия
StorageDate - Дата обновления склада
DeliveryPercent - Процент успешных закупок из общего числа заказов
BackPercent - Процент удержания при возврате товара (при отсутствии
возврата поставщику возвращается значение "-1")
AvtotoData - Массив, со след. элементами:
PartId* - Номер запчасти в списке результата поиска
Info - Общая информация по запросу, массив, содержащий 2 элемента:
Errors - Массив ошибок, возникший в процессе поиска
SearchID* - Уникальный идентификатор запроса поиска, возвращается в случае удачного
поиска
[*] — эти данные необходимо сохранить в Вашей системе, в дальнейшем они понадобятся для
добавления запчастей в корзину
$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 {
//Ответ не получен
}
}
Описание:
Предназначен для поиска списка брендов по артикулу запчасти
Входные параметры:
Артикул искомой запчасти, минимум 3 символа (тип: строка)
Параметры ответа:
Сервис возвращает многомерный массив, с элементами:
Brands - Список брендов, найденных по запросу - индексированный массив, с упорядоченными
целочисленными ключами, начиная с 0. Каждый элемент этого массива содержит информацию о конкретном
производителе и представляет из себя ассоциативный массив. Свойства бренда:
Manuf - Производитель
Name - Название
Info - Общая информация по запросу, массив, содержащий 1 элемент:
Errors - Массив ошибок, возникший в процессе поиска
$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 {
//Ответ не получен
}
}
Работа с корзиной: добавление, изменение кол-ва и удаление
Входные параметры:
В качестве входного параметра необходим массив со следующей структурой:
parts - Список запчастей для добавления в корзину (тип: индексированный массив):
Code* - Код детали
Manuf* - Производитель
Name* - Название (тип: строка)
Price - Цена (тип: вещест.)
Storage* - Склад (тип: строка)
Delivery* - Срок доставки (тип: строка)
Count - Кол-во для покупки (тип: целое)
PartId* - Номер запчасти в списке результата поиска (тип: целое)
SearchID* - Номер поиска (тип: целое)
RemoteID - Id запчасти в Вашей системе(тип: целое)
Comment - Ваш комментарий к запчасти (тип: строка)[необязательный параметр]
[*] — данные, сохраненные в результате поиска
Необходимо, чтобы количество для покупки Count не превышало максимальное количество MaxCount,
и соответствовало кратности заказа BaseCount
Параметры ответа:
Сервис возвращает многомерный массив со следующими элементами:
Done - Массив RomoteID успешно добавленных элементов
Errors - Массив ошибок:
type - Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но
возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при
проверке на корректность
id - RemoteID или номер элемента
error - Описание ошибки
Info - Общая информация по запросу
DoneInnerId - Массив успешно добавленных запчастей с внутренними ID корзины:
Входные параметры:
В качестве входного параметра необходим массив со следующей структурой:
parts - Список запчастей для которых необходимо изменить кол-во в корзине (тип:
индексированный массив):
InnerID* - ID записи в корзине AvtoTO (тип: целое)
RemoteID - ID запчасти в Вашей системе (тип: целое)
NewCount** - Необходимое кол-во запчастей в корзине (тип: целое, положительное)
[*] — данные, сохраненные в результате добавления в корзину
[**] — Необходимо, чтобы новое количество NewCount не превышало максимальное количество
MaxCount, и соответствовало кратности заказа BaseCount
Параметры ответа:
Сервис возвращает многомерный массив со следующими элементами:
Done - Массив RemoteID успешно обновленных элементов
Errors - Массив ошибок:
type - Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но
возникла ошибка при обновлении кол-ва в корзине или Element, если возникла ошибка при
проверке на корректность
Входные параметры:
В качестве входного параметра необходим массив со следующей структурой:
parts - Список запчастей для удаления из корзины (тип: индексированный массив):
InnerID* - ID записи в корзине AvtoTO (тип: целое)
RemoteID - ID запчасти в Вашей системе (тип: целое)
[*] — данные, сохраненные в результате добавления в корзину
Параметры ответа:
Сервис возвращает многомерный массив со следующими элементами:
Done - Массив RemoteID успешно удаленных элементов
Errors - Массив ошибок:
type - Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но
возникла ошибка при удалении элемента или Element, если возникла ошибка при проверке на
корректность
id - RemoteID или номер элемента
error - Описание ошибки
Info - Общая информация по запросу
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
StatDateStartStamp - дата начала периода подсчета в формате UNIX
StatDateEnd - дата окончания периода подсчета
StatDateEndStamp - дата окончания периода подсчета в формате UNIX
SearchHistory - Информация о количестве запросов по дням - массив со след. элементами:
Day - день (в формате dd/mm)
SearchCount - количество запросов
Errors - Массив ошибок, возникший в процессе поиска
$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 {
//Ответ не получен
}
}