Пошаговое создание заказа в Битрикс D7 через API

1С-Битрикс — это мощная система управления сайтом, которая предоставляет разработчикам множество возможностей для создания интернет-магазинов, корпоративных сайтов и других типов веб-платформ. Одной из ключевых функциональностей является процесс создания заказа в интернет-магазине, и в этой статье мы подробно рассмотрим, как это сделать с использованием ядра D7.

Пошаговое создание заказа в Битрикс D7 через API

Этапы создания заказа

Процесс создания заказа можно разделить на несколько ключевых этапов:

  1. Создание и наполнение корзины товарами.
  2. Создание объекта заказа и привязка его к корзине.
  3. Настройка отгрузки (выбор службы доставки).
  4. Указание способа оплаты.
  5. Сохранение заказа.

Давайте подробнее разберем каждый этап и посмотрим, как реализовать его через код.

Этап 1: Наполнение корзины товарами

Перед тем как создать заказ, необходимо подготовить корзину с товарными позициями. В реальных проектах товары могут поступать из различных источников — например, из формы "Заказ в один клик" или из интерфейса магазина.

В нашем примере создадим массив с товарами для добавления в корзину:


$arItems = [
    [
        'PRODUCT_ID' => 121,
        'NAME' => 'Аппарат плазменной резки АВРОРА Джет 40',
        'PRICE' => 20500,
        'CURRENCY' => 'RUB',
        'QUANTITY' => 1
    ]
];
    

После того как товар выбран, можно создать корзину. Для этого необходимо использовать класс \Bitrix\Sale\Basket, который позволяет управлять товарными позициями в корзине.


// Получаем текущий сайт
$siteId = Bitrix\Main\Context::getCurrent()->getSite();

// Создаем корзину для данного сайта
$basket = \Bitrix\Sale\Basket::create($siteId);

// Добавляем товары в корзину
foreach ($arItems as $arItem) {
    $basketItem = $basket->createItem('catalog', $arItem['PRODUCT_ID']);
    $basketItem->setFields($arItem);
}
    

В данном фрагменте создается объект корзины, и каждый товар из массива добавляется как элемент в корзину.

Этап 2: Создание заказа и привязка корзины

Для того чтобы создать заказ, нужно получить ID текущего пользователя. Мы можем использовать глобальный объект $USER для получения этого значения.


// Получаем ID пользователя
$userId = $USER->GetID();
    

Теперь создадим заказ и привяжем к нему корзину с товарными позициями:


// Создаем заказ для пользователя
$order = \Bitrix\Sale\Order::create($siteId, $userId);

// Привязываем корзину к заказу
$order->setBasket($basket);

// Указываем тип плательщика (например, физическое лицо)
$order->setPersonTypeId(1); // 1 — физическое лицо
    

Здесь мы создаем новый объект заказа, привязываем к нему корзину с товарами и указываем тип плательщика (в нашем примере это физическое лицо).

Этап 3: Настройка отгрузки (служба доставки)

После того как заказ и корзина созданы, нужно настроить отгрузку — то есть указать, какой службой доставки будет отправлен товар. Для этого используем коллекцию отгрузок:


// Получаем коллекцию отгрузок
$shipmentCollection = $order->getShipmentCollection();

// Создаем новую отгрузку с выбранной службой доставки (ID службы доставки — 1)
$shipment = $shipmentCollection->createItem(
    \Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);

// Получаем коллекцию товаров в отгрузке
$shipmentItemCollection = $shipment->getShipmentItemCollection();

// Добавляем товары из корзины в отгрузку
foreach ($basket as $basketItem) {
    $item = $shipmentItemCollection->createItem($basketItem);
    $item->setQuantity($basketItem->getQuantity());
}
    

Этот код создает отгрузку для заказа, выбирая службу доставки по ее ID (в нашем случае это служба с ID = 1). Затем товары из корзины добавляются в отгрузку с соответствующим количеством.

Этап 4: Указание способа оплаты

После настройки отгрузки нужно указать способ оплаты. В 1С-Битрикс для этого используется коллекция платежей.


// Получаем коллекцию платежей
$paymentCollection = $order->getPaymentCollection();

// Создаем новый платеж с выбранной платежной системой (ID платежной системы — 1)
$payment = $paymentCollection->createItem(
    \Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);

// Устанавливаем сумму и валюту
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
    

Этот код создает платеж с выбранной системой (по ID), устанавливает сумму платежа, которая равна стоимости заказа, и указывает валюту.

Этап 5: Сохранение заказа

После того как все данные для заказа, отгрузки и оплаты заданы, остается сохранить заказ в базе данных. В случае успешного сохранения возвращаем ID заказа, а в случае ошибки — возвращаем сообщение об ошибке.


// Сохраняем заказ и проверяем результат
$result = $order->save();

if ($result->isSuccess()) {
    // Возвращаем ID заказа в случае успеха
    return $order->getId();
} else {
    // Возвращаем ошибку в случае неудачи
    return $result->getError();
}
    

Если заказ успешно сохранен, его ID будет возвращен. В случае возникновения ошибок, будет возвращено сообщение об ошибке.

Заключение

Мы рассмотрели основные этапы создания заказа в 1С-Битрикс D7. Важно понимать, что создание заказа — это не просто добавление товаров в корзину, но и настройка многих важных параметров, таких как отгрузка, оплата и сохранение данных.

Теги:  D7, API, создание заказа, интернет-магазин, корзина, отгрузка, оплата

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.