Инструкция по использованию API для создания заказов
Создание заказов на сайте bior-opt.ru с помощью API. Операция осуществляются вызовом сервисов по адресу:
https://bior-opt.ru/api/create_order.php
В вызове необходимо указать следующие get параметры:
- login - логин
- pass - пароль в нормальном виде (без преобразования в md5)
- profile - идентификатор профиля покупателя. Найти можно в публичной части сайта Личный кабинет/ Мои компании/ столбец Код для автозаказа https://bior-opt.ru/personal/managers/
- products[] - массив товаров, значение состоит из двух частей: код 1C товара и количество, разделитель "--", то есть "products[]=27369--1&products[]=27324--5" означает, что добавляем товар с кодом "27369" в количестве 1 и товар с кодом "27324" в количестве 5
Логика добавления товара в заказ:
Остатки товара проверяются по складу, который выбран в личном кабинете пользователя. Если остаток товара на выбранном складе больше 0, то в заказ встаёт количество, которое вы отправляете в запросе. Если остаток = 0, то ошибка "товара нет в наличии". Если не получилось идентифицировать товар по коду, то ошибка "товар не найден"
Пример вызова:
https://bior-opt.ru/api/create_order.php?login=testlogin&pass=testpass&profile=123&products[]=27369--1&products[]=27324--5
Формат ответа – JSON. Пример ответа:
- В случае успешной операции сервис вернет статус заказа «OK», его ид и сумму, а также все позиции, которые добавлены в заказ и блок с ошибками. Стоимость товара встаёт уже с учётом вашей скидки.
{ "STATUS":"OK", "BASKET":[ { "CODE":"20-00008445", "NAME":"Спрей для рук PROBLEM.NET.ACTIVE 1 л. арт. LB-14019", "QUANTITY":999, "PRICE":700, "SUM":699300 }, { "CODE":"20-00008414", "NAME":"Спрей для рук PROBLEM.NET.ACTIVE 100 мл арт. LB-14015", "QUANTITY":30, "PRICE":180, "SUM":5400 } ], "ERRORS":[ "E15. Product is not available: 20-00008494", "E16. Product is not found: 20-0000выпв8494" ], "ORDER_ID":10285, "TOTAL":704700 }
- В случае если заказ не удалось создать, сервис вернет отрицательный статус с указанием ошибки:
{ "STATUS":"FAIL", "BASKET":{ }, "ERRORS":[ "E12. No access to profile" ] }
Чтобы создать заказ на сайте bior-opt.ru с помощью API, нужно отправить запрос по следующему адресу:
https://bior-opt.ru/api/v2/create_order.php
Запросы можно отправлять методами GET или POST, при этом данные должны быть переданы в формате application/x-www-form-urlencoded
. Для метода POST параметры передаются в теле запроса.
Параметры запроса:
- login — ваш логин.
- pass — ваш пароль (в открытом виде, без преобразования в md5).
- profile — идентификатор профиля покупателя. Найти можно в публичной части сайта: Личный кабинет > Мои компании > столбец "Код для автозаказа". Пример:
profile=123
. - products[] — массив товаров, где каждое значение состоит из двух частей, разделенных двойным дефисом
--
: код 1C товара и количество. Пример:products[]=18419--1&products[]=27324--5
.
Дополнительные параметры:
- testMode (необязательный) — если передать 1 или true, то заказ не будет принят в работу менеджерами, что позволяет тестировать интеграцию.
Пример запроса:
https://bior-opt.ru/api/v2/create_order.php?login=testlogin&pass=testpass&profile=123&products[]=18419--1&products[]=27324--5&testMode=1
Описание логики добавления товара в заказ:
Проверка остатков товара — производится по складу, выбранному в личном кабинете пользователя.- Если остаток товара на складе больше 0, в заказ добавляется указанное количество товара.
- Если товара нет в наличии, возвращается ошибка: "товара нет в наличии".
- Если товар не удалось идентифицировать по коду, возвращается ошибка: "товар не найден".
Формат ответа:
Ответ возвращается в формате JSON.
Пример ответа успешного создания заказа:
{
"STATUS": "OK",
"BASKET": [
{
"CODE": "24-00015042",
"NAME": "БАД к пище \"Фулибао Форте\" 10 капс. (картон. уп.)",
"QUANTITY": 1,
"PRICE": 1687.8,
"SUM": 1687.8
}
],
"ERRORS": [
{
"CODE": "E09",
"MESSAGE": "Error adding product to cart",
"PRODUCT_CODE": "24-00015019",
"DESCRIPTION": "Не указано количество товара для добавления в корзину"
},
{
"CODE": "E16",
"MESSAGE": "Unable to identify the product",
"PRODUCT_CODE": "23-000186"
},
{
"CODE": "E09",
"MESSAGE": "Error adding product to cart",
"PRODUCT_CODE": "21-00010255",
"DESCRIPTION": "Не указано количество товара для добавления в корзину"
},
{
"CODE": "E16",
"MESSAGE": "Unable to identify the product",
"PRODUCT_CODE": "24-000151"
},
{
"CODE": "E15",
"MESSAGE": "The selected warehouse does not have the product in stock",
"PRODUCT_CODE": "21-00011507"
},
{
"CODE": "E15",
"MESSAGE": "The selected warehouse does not have the product in stock",
"PRODUCT_CODE": "00975"
}
],
"ORDER_ID": 98513,
"TOTAL": 1687.8
}
Пример ответа при ошибке создания заказа:
{
"STATUS": "FAIL",
"BASKET": [],
"ERRORS": [
{
"CODE": "E17",
"MESSAGE": "The profile parameter does not exist for the login passed in the request"
}
]
}
Список возможных ошибок:
Код ошибки | Сообщение | Пояснение |
E01 | System error. Please try again later. | Ошибка системы, попробуйте позже. |
E02 | System error. Please try again later. | Ошибка системы, попробуйте позже. |
E03 | System error. Please try again later. | Ошибка системы, попробуйте позже. |
E04 | Missing login in request | Логин отсутствует в запросе. |
E05 | Password missing in request | Пароль отсутствует в запросе. |
E06 | Invalid or missing profile parameter in request | Параметр профиля отсутствует или некорректен. |
E07 | There are no products in the request | Список товаров отсутствует в запросе. |
E08 | - | Проблемы с авторизацией |
E09 | Error adding product to cart | Ошибка при добавлении продукта в корзину. |
E10 | There are no items in the cart to place an order | В корзине отсутствуют товары для оформления заказа. |
E11 | An error occurred while creating the order | Произошла ошибка при создании заказа. |
E13 | The user does not have sufficient rights to create an order. | У пользователя недостаточно прав для создания заказа. |
E14 | Discount application error. | Ошибка применения скидки. |
E15 | The selected warehouse does not have the product in stock | На выбранном складе товара нет в наличии |
E16 | Unable to identify the product | Не удалось идентифицировать продукт. |
E17 | The profile parameter does not exist for the login passed in the request | Параметр профиля не существует для переданного логина. |
Пример отправки запроса на php:
GET запрос
// URL для отправки запроса
$url = 'https://bior-opt.ru/api/v2/create_order.php?login=testlogin&pass=testpass&profile=123&testMode=true';
// Продукты в виде массива
$products = [
'18419--1', // Товар с кодом 27369 в количестве 1
'27324--5' // Товар с кодом 27324 в количестве 5
];
// Добавляем товары в URL
foreach ($products as $product) {
$url .= '&products[]=' . $product;
}
// Инициализация cURL
$ch = curl_init($url);
// Настройки для отправки GET-запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Получать ответ как строку
// Выполняем запрос и сохраняем ответ
$response = curl_exec($ch);
// Проверяем на наличие ошибок
if(curl_errno($ch)) {
echo 'Ошибка запроса: ' . curl_error($ch);
} else {
// Обрабатываем ответ
$responseDecoded = json_decode($response, true);
if ($responseDecoded['STATUS'] === 'OK') {
echo "Заказ успешно создан! ID заказа: " . $responseDecoded['ORDER_ID'] . "\n";
echo "Общая сумма заказа: " . $responseDecoded['TOTAL'] . "\n";
} else {
echo "Ошибка создания заказа:\n";
foreach ($responseDecoded['ERRORS'] as $error) {
echo $error["CODE"]." - " . $error["MESSAGE"] . "\n"; // Выводим каждую ошибку в новом строке
}
}
}
// Закрываем cURL
curl_close($ch);
POST запрос
// URL для отправки запроса
$url = 'https://bior-opt.ru/api/v2/create_order.php';
// Данные для запроса
$data = [
"login" => "testlogin", // Логин пользователя
"pass" => "testpass", // Пароль пользователя
"profile" => "123", // Идентификатор профиля
"products" => [ // Массив товаров в формате 'код товара--количество'
"18419--1", // Товар с кодом 27369 в количестве 1
"27324--5" // Товар с кодом 27324 в количестве 5
],
"testMode" => 1 // Необязательный параметр, который предотвращает создание реального заказа
];
// Инициализация cURL
$ch = curl_init($url);
// Устанавливаем настройки cURL
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Выполняем запрос и сохраняем ответ
$response = curl_exec($ch);
// Проверяем на наличие ошибок
if(curl_errno($ch)) {
echo 'Ошибка запроса: ' . curl_error($ch);
} else {
// Обрабатываем ответ
$responseDecoded = json_decode($response, true);
if ($responseDecoded['STATUS'] === 'OK') {
echo "Заказ успешно создан! ID заказа: " . $responseDecoded['ORDER_ID'] . "\n";
echo "Общая сумма заказа: " . $responseDecoded['TOTAL'] . "\n";
} else {
echo "Ошибка создания заказа:\n";
foreach ($responseDecoded['ERRORS'] as $error) {
echo $error["CODE"]." - " . $error["MESSAGE"] . "\n"; // Выводим каждую ошибку в новом строке
}
}
}
// Закрываем cURL
curl_close($ch);