XML-Каталог продукции

XML-файл продукции компании АЛКРАФТ позволяет облегчить загрузку данных в Вашу систему.

Содержит описание продукции, свойства и характеристики, картинки, цены

 

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-дверных изделий)

} ]

Выполнить
curl -X POST "https://www.alkraft.ru/api/products" -H "accept: application/json"

            

Сведения о продукции

  • Описание
  • Попробовать

Тип: 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-дверные и т.п.)

}

}

https://www.alkraft.ru
curl -X POST "https://www.alkraft.ru" -H "accept: application/json"

            

Получение таблицы стандартных размеров

  • Описание
  • Попробовать

Тип: GET или POST запрос

URL: https://www.alkraft.ru/api/products/{typeCode}/standartSizes

 

Параметры запроса:

typeCode: Код вида изделия

 

Формат ответа: JSON

 

Возвращает массив стандартных размеров продукции

 

Структура ответа:

[ {

model: Наименование модели

barcode: Штрихкод модели

width: Ширина, мм

height: Высота, мм

baseprice: Рекоммендованная розничная цена стандартного изделия

price: Действующая розничная цена стандартного изделия

weight: Вес, кг

outsideSizes: Габариты изделия, мм

insideSizes: Внутренний проем, мм

doorSizes: Габариты дверцы, мм

} ]

https://www.alkraft.ru
curl -X POST "https://www.alkraft.ru" -H "accept: application/json"

            

Сведения о таблицах нестандартных размеров

  • Описание
  • Попробовать

Тип: GET или POST запрос

URL: https://www.alkraft.ru/api/products/{typeCode}/customTables

 

Параметры запроса:

typeCode: Код вида изделия

 

Формат ответа: JSON

 

Возвращает массив описаний таблиц нестандартных размеров продукции

 

Структура ответа:

[ {

tableCode: Код таблицы размеров

tableName: Описание таблицы размеров (в потолок, в стену, 1-дверные, 2-дверные и т.п.)

} ]

https://www.alkraft.ru
curl -X POST "https://www.alkraft.ru" -H "accept: application/json"

            

Получение таблицы нестандартных размеров

  • Описание
  • Попробовать

Тип: 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-класс легенды ячейки для вывода на сайте

}

}

https://www.alkraft.ru
curl -X POST "https://www.alkraft.ru" -H "accept: application/json"

            

Получение каналов продаж

Список каналов продаж также можно посмотреть в личном кабинете пользователя.

Идентификатор канала продаж потребуется при отправке запроса на создание Заказа.

 

Тип: POST-запрос с авторизацией

URL: https://www.alkraft.ru/api/channels

 

Пример:

curl https://www.alkraft.ru/api/channels
-X POST
-H "Authorization: authToken"

 

Заголовок запроса:

authToken: Авторизационный токен, устанавливается в личном кабинете пользователя.

 

Формат ответа: JSON

 

Возвращает массив каналов продаж партнера

 

Структура ответа:

{

status: Статус обработки запроса ( true | false )

errors[ ]: Массив ошибок, если status = false

data[ ]: Массив каналов продаж

{

id: Идентификатор канала продаж

name: Наименование канала продаж

}

}

Создание заказа c проверкой

Тип: POST-запрос с авторизацией

URL: https://www.alkraft.ru/api/orders/check

 

Описание:

  1. Метод отправляет Заказ менеджеру на проверку
  2. Если в Заказе произошли изменения, его можно отправить повторно.
  3. После проверки всех полученных Заказов, в учетной системе будет создан один общий заказ.
  4. При наличии некорректно переданных параметров, на контактный email будет отправлено письмо с указанием какой параметр указан неверно и как следовало его указывать.

 

Пример:

curl https://www.alkraft.ru/api/orders/check
-X POST
-H "Authorization: authToken"
-H 'Content-Type: application/json'
-d 'JSONdata'

 

Заголовок запроса:

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

 

Описание:

  1. Метод создает заказ в учетной системе без проверки менеджера
  2. Происходит автоматическое резервирование товара
  3. Каждый созданный заказ рассматривается как новый и не объединяется с другими заказами

 

Пример:

curl https://www.alkraft.ru/api/orders/create
-X POST
-H "Authorization: authToken"
-H 'Content-Type: application/json'
-d 'JSONdata'

 

Заголовок запроса:

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

 

Пример:

curl https://www.alkraft.ru/api/orders/getOrder
-X POST
-H "Authorization: authToken"
-H 'Content-Type: application/json'
-d 'JSONdata'

 

Заголовок запроса:

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); //Данные заказа