Описание партнерского API магазина Техноцентр
Получив статус Партнера, в личном кабинете у вас станет доступен раздел «Как пользоваться».
В данном разделе размещены ссылки на «Xml-прайс» и «Адрес для отправки заказов».
«Xml-прайс»
В Xml-прайсе вы будете получать список товаров с актуальной ценой для вас (закупочная цена) и наличием на наших складах.
Также в Xml-прайсе есть все данные о товаре (название, изображение, описание, категория товара, артикул, цена в рублях). Этих данных вам будет достаточно, чтобы иметь возможность выводить товары в вашем продуктовом каталоге.
Ваш робот должен скачивать Xml-прайс, извлекать оттуда данные о товарах, наличии и цене. Используя эти данные вы строите свой продуктовый каталог, делаете свою наценку на товары.
Прайс представляет из себя xml-файл в формате YML (формат выгрузки товаров в Яндекс.Маркет).
Наличие товара на складе мы выгружаем в элементе «outlet».
Атрибут «instock» показывает сколько товара находится на складе, атрибут «booking» - сколько товаров доступно для резервирования.
Дополнительные данные о товаре содержатся в элементах «param» (например, бренд, гарантийный срок и т.д.).
Мы обновляем данные о товарах в 09:00,10:00,12:00,14:00,16:00,18:00,20:00,22:00,03:00,06:00, чаще нет смысла скачивать и парсить Xml-файл.
«Отправка заказов через API»
Когда клиент на вашем сайте/приложении подтверждает заказ и в данном заказе есть позиции из нашего ассортимента, вы должны отправить нам список товаров, которые мы зарезервируем под вас.
Список товаров и их кол-во вы должны отправлять на «Адрес для отправки заказов», доступный вам в разделе «Как пользоваться».
Отправлять вы должны артикул товара из Xml-прайса и требуемое кол-во единиц товара. Вы также можете оставлять комментарии с любой дополнительной информацией в элементе «comment».
Данные отправляются в формате JSON, например:
{"products":[{"articul":"048-0070","quantity":"1"},{"articul":"015-0071","quantity":"1"}],"comment":"Comment to the order"}
Данные необходимо отправлять в кодировке UTF-8, POST-запросом.
Не забывайте указывать HTTP-заголовок: Content-Type: application/json
Пример PHP кода, как отправить заказ
<?php
// Token
$token = "YOUR_TOKEN";
//API endpoint
$url = 'https://tehnocentr.ru/api/v1/order.php?token='.$token;
//The JSON data.
$jsonData = array(
'products' => [
[
'articul' => '048-0070',
'quantity' => '1',
],
[
'articul' => '015-0071',
'quantity' => '2',
],
],
'comment' => 'Comment to the order'
);
//Encode the array into JSON.
$jsonDataEncoded = json_encode($jsonData);
//Initiate cURL.
$ch = curl_init($url);
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_TIMEOUT, 10); //timeout after 10 seconds
// SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Execute the request
$result = curl_exec($ch);
if(curl_error($ch))
{
echo 'Curl error:'.curl_error($ch);
}
else
{
header('Content-type: text/html; charset=utf-8');
$answer = json_decode($result,true);
echo print_r($answer,true);
}
?>
Возможные ответы сервера
Сервер отвечает в Json (кодировка UTF-8).
Успешный заказ
{"order_id":146625,"success":"New order successfully accepted"}
Вам отдается номер заказа в системе Техноцентр.ру и сообщение об успехе. Дальнейшая работа с заказами (удаление, изменение, объединение) возможна в «Личном кабинете» на сайте tehnocentr.ru в разделе «Заказы». Информация о заказе также продублируется на ваш контактный Email адрес.
Ошибка в заказе
Если система Техноцентр.ру не принимает заказ по какой-либо причине отдается ответ:
{"error":"ERROR MESSAGE"}
Возможные сообщения об ошибках (ERROR MESSAGE)
Not enough products in stock | Недостаточно товара для резерва. В ответ вам отдается: {"stock":{"048-0070":"0","015-0071":"0"},"error":"Not enough products in stock"} Элемент «stock» содержит количество единиц товара каждого запрошенного артикула, которые есть в данный момент на складе. Получая данный ответ, вы должны оповестить вашего покупателя, что запрашиваемое кол-во товара недоступно к покупке. Пусть изменит количество заказываемого товара или выберет другой аналог. Пример реакции на данную ошибку вы можете посмотреть в корзине на нашем сайте. |
Server is down | Сервер не работает. Попробуйте отправить запрос через 10 секунд (но не надо делать бесконечный цикл, пары-тройки раз достаточно). Если ответ такой же, то видимо у нас какие-то технические проблемы. Маловероятная ошибка, но, тем не менее, может быть. |
Invalid request | Вы не передаете заголовок: Content-Type: application/json |
Invalid JSON | Ваш запрос содержит некорректный Json. |
Access denied | Вы не передаете token или передаете некорректный token. |
Bad partner | Вы в данный момент не являетесь партнером, обратитесь к вашему менеджеру для выяснения причины. |
No product information | Вы не передаете информацию о резервируемых товарах (артикул и кол-во товара). |
No comment information | Комментарий к заказу обязательно должен передаваться, пусть он будет пустой. |
No articul | Вы не передаете артикул у товара. |
No quantity | Вы не передаете количество у товара. |
Quantity <= 0 | Количество резервируемого товара некорректное, допускается число больше нуля. |
Product with articul "АРТИКУЛ" not found | Товар с указанным артикулом не найден в нашей БД. |
Internal error | Ваш заказ не принимается по неустановленной причине. Если у вас все время такая ошибка, обратитесь к вашему менеджеру. |
