Рассмотрим в этой статье пример получения истории заказов пользователя на Bitrix API
Иногда требуется выгрузить заказы в какую-то внешнюю систему, отличную от 1С, в формате XML или JSON для их дальнейшей обработки. Рассмотрим как это можно сделать на примере Bitrix Framework. Предположим, что внешняя система должна получить данные заказа пользователя по его ID, отправляя на сайт GET-запрос. Создадим на сайте файл, допустим, /local/api/getorders.php. В файле подключим пролог, класс Loader и установим кодировку utf-8:
header('Content-Type: application/json; charset=utf-8');
use Bitrix\Main\Loader;
Далее, обработаем GET-параметр uid, в котором передается ID пользователя на сайте:
$query = $_GET['uid'];
$query = trim(htmlspecialchars(strip_tags($query)));
if (!$query) {
echo json_encode(["error" => "Пустой запрос"]);
}
if (!Loader::includeModule('sale')) {
echo json_encode(["error" => "Модуль sale не подключен"]);
exit;
}
Здесь мы также проверяем доступность модуля sale (Интернет-магазин) и если он отсутствует в системе, то будет выдано сообщение об ошибке. Также, если GET-запрос окажется пустым, то тоже будет возвращаться сообщение об ошибке. Далее, используя метод GetList класса CSaleOrder модуля sale получаем все заказы пользователя по его ID, отсортированные по убыванию даты создания заказа:
$arFilter = Array(
"USER_ID" => $_GET["uid"],
);
$db_sales = CSaleOrder::GetList(
array("DATE_INSERT" => 'DESC'),
$arFilter
);
Заказы мы получили. Но, чтобы передать их во внешнюю систему, нужно сформировать массив заказов $result только с нужными данными, конвертировать его в JSON и предать:
$result = [];
while ($ar_sales = $db_sales->Fetch()){
$arStatus = CSaleStatus::GetByID($ar_sales["STATUS_ID"], "RU");
$result[] = [
"oid" => $ar_sales["ID"], // ID заказа
"onum" => $ar_sales["ACCOUNT_NUMBER"], // номер заказа
"date" => $ar_sales["DATE_INSERT"], // дата создания заказа
"summ" => $ar_sales["PRICE"], // сумма заказа
"status" => $arStatus["NAME"], // статус заказа
];
}
echo json_encode($result, JSON_UNESCAPED_UNICODE);
Обратите внимание на то, что статус заказа мы должны получить по его коду с помощью метода GetByID класса CSaleStatus модуля интернет-магазин. Ниже полный листинг примера:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
header('Content-Type: application/json; charset=utf-8');
use Bitrix\Main\Loader;
$query = $_GET['uid'];
$query = trim(htmlspecialchars(strip_tags($query)));
if (!$query) {
echo json_encode(["error" => "Пустой запрос"]);
}
if (!Loader::includeModule('sale')) {
echo json_encode(["error" => "Модуль sale не подключен"]);
exit;
}
$arFilter = Array(
"USER_ID" => $_GET["uid"],
);
$db_sales = CSaleOrder::GetList(
array("DATE_INSERT" => 'DESC'),
$arFilter
);
$result = [];
while ($ar_sales = $db_sales->Fetch()){
$arStatus = CSaleStatus::GetByID($ar_sales["STATUS_ID"], "RU");
$result[] = [
"oid" => $ar_sales["ID"],
"onum" => $ar_sales["ACCOUNT_NUMBER"],
"date" => $ar_sales["DATE_INSERT"],
"summ" => $ar_sales["PRICE"],
"status" => $arStatus["NAME"],
];
}
echo json_encode($result, JSON_UNESCAPED_UNICODE);

