Блог разработчика 1С-Битрикс

Пошаговое создание заказа в Битрикс 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, создание заказа, интернет-магазин, корзина, отгрузка, оплата


Валерий Макеев
10.09.2025 16:03
Этот код создает новый заказ с тестовым товаром, автоматически  обрабатывая как авторизованных, так и неавторизованных пользователей.
Код
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

if (CModule::IncludeModule("sale")) {
    $siteId = Bitrix\Main\Context::getCurrent()->getSite();
    
    // Проверяем авторизацию пользователя
    global $USER;
    $userId = null;
    if ($USER && $USER->IsAuthorized()) {
        $userId = $USER->GetID();
    }

    // Создание корзины
    $basket = Bitrix\Sale\Basket::create($siteId);
    
    $item = $basket->createItem('catalog', 123);
    $item->setFields([
        'QUANTITY' => 2,
        'CURRENCY' => 'RUB',
        'PRICE' => 5000,
        'NAME' => 'Тестовый товар'
    ]);

    // Создание заказа
    $order = Bitrix\Sale\Order::create($siteId, $userId);
    $order->setBasket($basket);
    $order->setPersonTypeId(1);

    // Добавление доставки
    $shipmentCollection = $order->getShipmentCollection();
    $shipment = $shipmentCollection->createItem();
    $shipment->setField('DELIVERY_ID', 1);

    // Добавление оплаты
    $paymentCollection = $order->getPaymentCollection();
    $payment = $paymentCollection->createItem();
    $payment->setField('PAY_SYSTEM_ID', 1);

    // Сохранение
    $result = $order->save();
    if ($result->isSuccess()) {
        echo 'Заказ #' . $order->getId() . ' успешно создан';
    } else {
        print_r($result->getErrors());
    }
} else {
    echo "Модуль sale не установлен";
}
?>

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

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

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

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.

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

от 4 недель

от 90 000 рублей

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