Блог Горошко Андрея 1C-Битрикс E-commerce в D7: Программное создание заказа (Bitrix\Sale\Order)

E-commerce в D7: Программное создание заказа (Bitrix\Sale\Order)

Программное создание заказа — задача, возникающая при импорте заказов, создании «заказа в 1 клик» или разработке своего API. В D7 это делается через цепочку связанных объектов.

Шаг 1: Создание объекта заказа

use Bitrix\Sale;

$siteId = \Bitrix\Main\Context::getCurrent()->getSite();
$userId = 1; // ID пользователя, на которого оформляем заказ
$currencyCode = \Bitrix\Currency\CurrencyManager::getBaseCurrency();

// Создаем новый заказ
$order = Sale\Order::create($siteId, $userId);
$order->setPersonTypeId(1); // ID типа плательщика (Физическое лицо)
$order->setField('CURRENCY', $currencyCode);

Шаг 2: Привязка корзины

Заказ не может существовать без товаров. Мы можем взять текущую корзину пользователя или создать новую «виртуальную».

// Берем текущую корзину пользователя
$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), $siteId);

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

Шаг 3: Отгрузка (Доставка)

В D7 доставка — это сущность «Отгрузка» (Shipment).

$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem();

// Указываем службу доставки (ID)
$service = Sale\Delivery\Services\Manager::getById(Sale\Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId());
$shipment->setFields([
    'DELIVERY_ID' => $service['ID'],
    'DELIVERY_NAME' => $service['NAME'],
]);

// Кладем все товары из корзины в эту отгрузку
$shipmentItemCollection = $shipment->getShipmentItemCollection();
foreach ($basket as $basketItem) {
    $item = $shipmentItemCollection->createItem($basketItem);
    $item->setQuantity($basketItem->getQuantity());
}

Шаг 4: Оплата

$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem();

// Указываем платежную систему (ID=1 - Наличные)
$paySystemId = 1;
$paySystem = Sale\PaySystem\Manager::getObjectById($paySystemId);

$payment->setFields([
    'PAY_SYSTEM_ID' => $paySystem->getField("ID"),
    'PAY_SYSTEM_NAME' => $paySystem->getField("NAME"),
    'SUM' => $order->getPrice(), // Сумма оплаты равна сумме заказа
]);

Шаг 5: Свойства заказа и сохранение

// Устанавливаем свойства (Телефон, Адрес и т.д.)
$propertyCollection = $order->getPropertyCollection();
$phoneProp = $propertyCollection->getItemByOrderPropertyId(3); // 3 - ID свойства Телефон
if ($phoneProp) {
    $phoneProp->setValue('+79990000000');
}

// Пересчитываем заказ (скидки, налоги, стоимость доставки)
$order->doFinalAction(true);

// Сохраняем
$result = $order->save();

if ($result->isSuccess()) {
    echo "Заказ создан с ID: " . $order->getId();
} else {
    print_r($result->getErrorMessages());
}

Вывод:
Создание заказа в D7 — это процесс сборки конструктора:

Заказ -> Корзина -> Отгрузка -> Оплата.

Этот подход обеспечивает целостность данных и автоматический пересчет всех стоимостей.

Bitrix\Sale\Order, создание заказа API, D7 заказ, оформление заказа программно, привязка оплаты, привязка доставки, сохранение заказа.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Введение: Подробное руководствоВведение: Подробное руководство

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Введение: Подробное руководство». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Введение Битрикс24

Удалить привязку элемента корзины к оплате sale.paymentitembasket.deleteУдалить привязку элемента корзины к оплате sale.paymentitembasket.delete

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Удалить привязку элемента корзины к оплате sale.paymentitembasket.delete», разберем

Разработка B2B-портала для оптовых поставщиков упаковки и одноразовой посудыРазработка B2B-портала для оптовых поставщиков упаковки и одноразовой посуды

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Разработка