Содержит описание продукции, свойства и характеристики, картинки, цены
https://www.alkraft.ru/catalog.xml
Структура файла:
name: наименование сайта
company: наименование компании
url: адрес сайта
email: e-mail компании
categories[ ]: разделы сайта
{
category: наименование раздела
[id]: идентификатор раздела
}
products[ ]: массив продукции
{
product:
{
id: идентификатор продукции
url: ссылка на страницу продукции
name: наименование продукции
categoryId: идентификатор раздела
description: описание продукции
properties[ ]: характеристики продукции
{
property: значение характеристики
[code]: код группы характеристик
[title]: наименование группы характеристик
}
}
variants[ ]: стандартные размеры продукции
{
variant:
{
id: идентификатор модификации
title: наименование
vendorCode: артикул
price: розничная цена
options[ ]: свойства модификации
{
option: значение свойства
[code]: код свойства
[title]: наименование свойста
}
}
pictures[ ]: изображения модификации
{
picture: ссылка на изображение
}
}
}
}
pictures[ ]: изображения продукции
{
picture: ссылка на изображение
[type]: код группы изображений
[title]: описание изображения
}
}
}
Тип: GET или POST запрос
URL: https://www.alkraft.ru/api/products
Формат ответа: JSON
Возвращает массив объектов продукции
Структура ответа:
[ {
typeCode: код вида изделия
typeName: наименование вида изделия
widthName: Наименование для ширины
heightName: Наименование для высоты
leftSectionName: Наименование левой секции (для 2-дверных изделий)
rightSectionName: Наименование правой секции (для 2-дверных изделий)
} ]
Тип: GET или POST запрос
URL: https://www.alkraft.ru/api/products/{typeCode}
Параметры запроса:
typeCode: Код вида изделия
Формат ответа: JSON
Возвращает базовые данные о продукции
Структура ответа:
{
actualDate: Дата актуальности данных (YYYY-MM-DD)
typeCode: Код вида изделия
typeName: Наименование вида изделия
widthName: Наименование для ширины
heightName: Наименование для высоты
leftSectionName: Наименование левой секции (для 2-дверных изделий)
rightSectionName: Наименование правой секции (для 2-дверных изделий)
standartSizes[ ]: Массив стандартной продукции (незаполненный, см. получение таблицы стандартных размеров)
customTables[ ]: Массив таблиц заказной продукции
{
tableCode: Код таблицы размеров
tableName: Описание таблицы размеров (в потолок, в стену, 1-дверные, 2-дверные и т.п.)
}
}
Тип: GET или POST запрос
URL: https://www.alkraft.ru/api/products/{typeCode}/standartSizes
Параметры запроса:
typeCode: Код вида изделия
Формат ответа: JSON
Возвращает массив стандартных размеров продукции
Структура ответа:
[ {
model: Наименование модели
barcode: Штрихкод модели
width: Ширина, мм
height: Высота, мм
baseprice: Рекоммендованная розничная цена стандартного изделия
price: Действующая розничная цена стандартного изделия
weight: Вес, кг
outsideSizes: Габариты изделия, мм
insideSizes: Внутренний проем, мм
doorSizes: Габариты дверцы, мм
power: Грузоподъемность, кг
} ]
Тип: GET или POST запрос
URL: https://www.alkraft.ru/api/products/{typeCode}/customTables
Параметры запроса:
typeCode: Код вида изделия
Формат ответа: JSON
Возвращает массив описаний таблиц нестандартных размеров продукции
Структура ответа:
[ {
tableCode: Код таблицы размеров
tableName: Описание таблицы размеров (в потолок, в стену, 1-дверные, 2-дверные и т.п.)
} ]
Тип: GET или POST запрос
URL: https://www.alkraft.ru/api/products/{typeCode}/customTables/{tableCode}
Параметры запроса:
typeCode: Код вида изделия
tableCode: Код таблицы размеров
Формат ответа: JSON
Возвращает данные таблицы нестандартных размеров продукции
Структура ответа:
{
tableCode: Код таблицы размеров
tableName: Описание таблицы размеров (в потолок, в стену, 1-дверные, 2-дверные и т.п.)
openDirections[ ]: Массив направлений открывания.
Актуально для некоторых моделей 1-дверных люков (например, Бригадир), когда необходимо точно понимать в какую сторону открывается дверца люка.
Это не имеет значения для большинства люков, т.к. люк можно перевернуть, но для некоторых дополнений это принципиально.
Например, скрытая ручка-перевертыш будет работать только в определенном положении.
{
code: Код
name: Наименование
}
sectionsExtras[ ]: Массив групп дополнений секции
{
name: Наименование группы дополнений
required: Признак обязательного выбора значения из этой группы (true|false)
values[ ]: Массив дополнений группы
Из каждой группы можно выбрать только одно значение
{
code: Код дополнения
name: Наименование дополнения
price: Розничная стоимость дополнения
notice: Важная информация о дополнении
}
}
legends[ ]: Массив описаний ячеек таблицы
{
description: Описание ячейки (кол-во замков, усиления и т.п.)
cellClass: CSS-класс легенды для вывода на сайте
}
cells[ ]: Массив ячеек таблицы
{
width: Ширина, мм
height: Высота, мм
sections: Количество секций изделия
price: Розничная цена заказного изделия
outsideSizes: Габариты изделия, мм
insideSizes: Внутренний проем, мм
doorSizes: Габариты дверцы, мм
cellClass: CSS-класс легенды ячейки для вывода на сайте
askDirection : Пизнак необходимости указания направления открываения (true|false)
weight: Вес, кг
volume: Объем, м3
}
}
Список каналов продаж также можно посмотреть в личном кабинете пользователя.
Идентификатор канала продаж потребуется при отправке запроса на создание Заказа.
Тип: POST-запрос с авторизацией
URL: https://www.alkraft.ru/api/channels
Пример:
Заголовок запроса:
authToken: Авторизационный токен, устанавливается в личном кабинете пользователя.
Формат ответа: JSON
Возвращает массив каналов продаж партнера
Структура ответа:
{
status: Статус обработки запроса ( true | false )
errors[ ]: Массив ошибок, если status = false
data[ ]: Массив каналов продаж
{
id: Идентификатор канала продаж
name: Наименование канала продаж
}
}
Тип: POST-запрос с авторизацией
URL: https://www.alkraft.ru/api/orders/check
Описание:
Пример:
Заголовок запроса:
authToken: Авторизационный токен, устанавливается в личном кабинете пользователя.
Параметры запроса:
JSONdata: данные в формате JSON
Структура параметров запроса:
{
orderHash: Уникальный идентификатор заказа в системе Партнера. Повторная загрузка игнорируется.
orderNumber: Номер заказа в системе Партнера, необязательный
orderDate: Дата заказа в системе Партнера, необязательный (YYYY-MM-DD)
wishDate: Желаемая дата отгрузки всего заказа, необязательный (YYYY-MM-DD)
channel: Идентификатор канала продаж. Если канал продаж один, можно не указывать.
shipmentRule: Код правила определения календаря отгрузок стандартной продукции:
--для дистрибьюторов--
preorder - заявка на месяц, отгрузка партиями в течение месяца.
extraorder - дополнительная заявка, отгрузка по нормативам заказной продукции.
--кроме дистрибьюторов--
quick - срочная отгрузка на следующий рабочий день.
standart - страндартная отгрузка в течение 3 рабочих дней.
wait - отгрузка в течение 7 рабочих дней.
notifyEmail: Email для отправки сообщений об ошибках, необязательный
details[ ]: Массив строк заказа
{
rowId: Идентификатор строки заказа в системе Партнера (обязательный)
Используется для идентификации при повторной отправке данных
name: Наименование изделия в системе Партнера (обязательный)
Используется для определения корректности переданных параметров
typeCode: Код вида изделия
width: Ширина
height: Высота
quantity: Количество
price: Контрольная розничная стоимость изделия с дополнениями. (необязательный)
Сопоставляется с действительной розничной ценой и в случае несоответствия заказ не сформируется, будет возращена соответствующая ошибка. Значение "0" не анализируется.
--далее параметры для нестандартных размеров--
tableCode: Код таблицы размеров
extrasL: Дополнения левой секции (необязательный)
extrasR: Дополнения правой секции (необязательный)
extrasL и extrasR - это либо:
1) массив с кодами дополнений, например ['Код1','Код2']
2) строка, содержащая коды дополнений разделенных сиволом "+", например 'Код1+Код2'
Последовательность кодов значения не имеет.
openDirection: Код направления открывания (необязательный)
Заполняется для некоторых моделей 1-дверных люков
1) если openDirection передан, то не важно в каком из полей (extrasL или extrasR) указаны дополнения
2) если openDirection не передан, то заполнение extrasL означает левое открывание, а extrasR - правое.
L1: Ширина левой секции 2-дверных люков, если не указано или 0, секции считаются равными
comment: Комментарий к строке заказа (необязательный)
В комментарии можно написать дополнительные пожелания. Например, когда необходмо сделать дополнительное усиление или вставить дополнительный замок и пр.
Менеджер согласует эти пожелания с производством, изменив стоимость позиции, при необходимости.
}
}
Формат ответа: JSON
Структура ответа:
{
status: Статус обработки запроса ( true | false )
errors[ ]: Массив ошибок, если status = false
data: Пустое значение
}
Пример формирования и отправки данных на PHP:
$data['orderHash'] = '3101202112345'; $data['orderNumber'] = '12345'; $data['orderDate'] = '2021-01-31'; $data['wishDate'] = '2021-02-15'; $data['channel'] = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; $data['shipmentRule'] = 'extraorder'; $data['details'][0]['typeCode'] = 'brigadir'; $data['details'][0]['tableCode'] = 'brigadir-2'; $data['details'][0]['rowId'] = '3101202112345_1'; $data['details'][0]['name'] = 'Люк-дверь "Бригадир" 1300*900 (2-дверный), L1=L2, Левая створка: трубчатый замок и шариковые фиксторы, Правая створка: шпингалеты'; $data['details'][0]['width'] = 1300; $data['details'][0]['height'] = 900; $data['details'][0]['quantity'] = 1; $data['details'][0]['price'] = 0; $data['details'][0]['extrasL'] = ['ТРЗ','ШАР']; $data['details'][0]['extrasR'] = ['ШПГ']; $data['details'][0]['L1'] = 0; $JSONdata = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://www.alkraft.ru/api/orders/check"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "Content-type: application/json", "Autorization: aaaabbbbccccddddeeeeffffgggghhhh", "Connection: close" ) ); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $JSONdata); $curlResponse = curl_exec($curl); if (!$curlResponse) { die("curl_error:" . curl_error($curl)); //Ошибка выполнения } curl_close($curl); if (curl_getinfo($curl, CURLINFO_HTTP_CODE) != 200) { die("Ошибка подключения к сервису"); } $answer = json_decode($curlResponse); //Полученный ответ от сервиса if ($answer->status == "false")) { print_r($answer->errors); //Ошибки при создания заказа die(); }
Тип: POST-запрос с авторизацией
URL: https://www.alkraft.ru/api/orders/create
Описание:
Пример:
Заголовок запроса:
authToken: Авторизационный токен, устанавливается в личном кабинете пользователя.
Параметры запроса:
JSONdata: данные в формате JSON
Структура параметров запроса:
{
соответствует структуре orders/check
Отличия:
details[ ]: Массив строк заказа
{
rowId: Идентификатор строки заказа в системе Партнера (необязательный)
name: Наименование изделия в системе Партнера (необязательный)
}
}
Формат ответа: JSON
Структура ответа:
{
status: Статус обработки запроса ( true | false )
errors[ ]: Массив ошибок, если status = false
data: Данные созданного заказа
{
orderId: Уникальный идентификатор заказа
orderHash: Уникальный идентификатор заказа в системе Партнера
number: Номер созданного заказа
date: Дата и время создания заказа (YYYY-MM-DD hh:mm)
clientNumber: Номер заказа в системе Партнера
}
}
Пример формирования и отправки данных на PHP:
$data['orderHash'] = '3101202112345'; $data['orderNumber'] = '12345'; $data['orderDate'] = '2021-01-31'; $data['wishDate'] = '2021-02-15'; $data['channel'] = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; $data['shipmentRule'] = 'extraorder'; $data['details'][0]['typeCode'] = 'brigadir'; $data['details'][0]['tableCode'] = 'brigadir-2'; $data['details'][0]['width'] = 1300; $data['details'][0]['height'] = 900; $data['details'][0]['quantity'] = 1; $data['details'][0]['price'] = 0; $data['details'][0]['extrasL'] = ['ТРЗ','ШАР']; $data['details'][0]['extrasR'] = ['ШПГ']; $data['details'][0]['L1'] = 0; $JSONdata = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://www.alkraft.ru/api/orders/create"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "Content-type: application/json", "Autorization: aaaabbbbccccddddeeeeffffgggghhhh", "Connection: close" ) ); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $JSONdata); $curlResponse = curl_exec($curl); if (!$curlResponse) { die("curl_error:" . curl_error($curl)); //Ошибка выполнения } curl_close($curl); if (curl_getinfo($curl, CURLINFO_HTTP_CODE) != 200) { die("Ошибка подключения к сервису"); } $answer = json_decode($curlResponse); //Полученный ответ от сервиса if ($answer->status == "false")) { print_r($answer->errors); //Ошибки при создания заказа die(); } print_r($answer->data); //Данные созданного заказа
Тип: POST-запрос с авторизацией
URL: https://www.alkraft.ru/api/orders/getOrder
Пример:
Заголовок запроса:
authToken: Авторизационный токен, устанавливается в личном кабинете пользователя.
Параметры запроса:
JSONdata: данные в формате JSON
Структура параметров запроса:
{
--требуется передача хотя бы одного идентификатора--
orderId: Уникальный идентификатор заказа, полученный в результате создания заказа методом orders/create
orderHash: Уникальный идентификатор заказа в системе партнера, передаваемый при создании заказа
}
Формат ответа: JSON
Структура ответа:
{
status: Статус обработки запроса ( true | false )
errors[ ]: Массив ошибок, если status = false
data: Данные заказа
{
orderId: Уникальный идентификатор заказа
orderHash: Идентификатор заказа в системе Партнера
url: Ссылка на заказ
url_invoice: Ссылка на печатную форму счета на оплату
number: Номер заказа
date: Дата и время заказа (YYYY-MM-DD hh:mm)
clientNumber: Номер заказа в системе Партнера
channel: Канал продажи
{
id: Идентификатор канала продажи
name: Наименование канала продажи
}
comment: Комментарий
manager: ФИО менеджера заказа
details[ ]: Массив строк заказа
{
rowId: Идентификатор строки заказа в системе Партнера
index: Номер строки
fullname: Наименование номенклатуры
shipDate: Дата отгрузки (YYYY-MM-DD)
quantity: Количество
price: Цена
discount: Сумма скидки
sum: Сумма со скидкой
typeCode: Код вида изделия
width: Ширина изделия
height: Высота изделия
--далее данные нестандартного изделия--
tableCode: Код таблицы размеров
extrasL[ ]: Массив кодов дополнений левой секции
extrasR[ ]: Массив кодов дополнений правой секции
L1: Размер левой секции
comment: Комментарий к строке заказа
}
sum: Сумма заказа
sum_payed: Сумма оплат
sum_shipped: Сумма отгрузок
payments[ ]: Массив платежей по заказу
{
num: Номер платежа
date: Дата платежа (YYYY-MM-DD)
sum: Сумма платежа
name: Заголовок документа
}
shipments[ ]: Массив отгрузок по заказу
{
num: Номер накладной
date: Дата отгрузки (YYYY-MM-DD)
sum: Сумма отгрузки
name: Заголовок документа
id: Идентификатор документа
url: Ссылка на печатную форму УПД
}
}
}
Пример получения данных заказа на PHP:
$data['orderHash'] = '3101202112345'; $data['orderId'] = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; $JSONdata = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://www.alkraft.ru/api/orders/getOrder"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "Content-type: application/json", "Autorization: aaaabbbbccccddddeeeeffffgggghhhh", "Connection: close" ) ); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $JSONdata); $curlResponse = curl_exec($curl); if (!$curlResponse) { die("curl_error:" . curl_error($curl)); //Ошибка выполнения } curl_close($curl); if (curl_getinfo($curl, CURLINFO_HTTP_CODE) != 200) { die("Ошибка подключения к сервису"); //Ошибка подключения к сервису } $answer = json_decode($curlResponse); //Полученный ответ от сервиса if ($answer->status == "false")) { print_r($answer->errors); //Ошибки die(); } print_r($answer->data); //Данные заказа