Давайте рассмотрим пример создание заказа средствами 1С Битрикс D7. Если разделить создание заказа на этапы, получим следующий план:
  1. Создание объекта корзины и наполнение её товарами
  2. Создание объекта заказа и связывание его с корзиной
  3. Создание отгрузки (назначение службы доставки)
  4. Создание оплаты (назначение платёжной системы)
  5. Сохранение заказа
И так, сам пример.

Создание корзины


//Массив товаров будущего заказа, может быть получен 
//различными путями, например передан из формы "Заказ в один клик"

$arItems = [

	[
		'PRODUCT_ID' => 18,
		'NAME' => 'Телевизор LG', 
		'PRICE' => 10000,
		'CURRENCY' => 'RUB',
		'QUANTITY' => 1
	]
];

// Создаем и наполняем корзину
$siteId = Bitrix\Main\Context::getCurrent()->getSite();
$basket = \Bitrix\Sale\Basket::create($siteId);
foreach ($arItems as $i => $arItem) { $basketItem = $basket->createItem('catalog', $arItem['PRODUCT_ID']); $basketItem->setFields($arItem); }
 

Создание заказа

Тут предварительно нужно узнать ID пользователя, для этого можно воспользоваться $USER->GetID().


// Создаем заказ и привязываем корзину, перерасчет происходит автоматически
$order = \Bitrix\Sale\Order::create($siteId, $USER->GetID());
$order->setPersonTypeId($personTypeId); $order->setBasket($basket);

Создание отгрузки и оплаты


$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
	\Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();

/** @var \Bitrix\Sale\BasketItem $basketItem */
foreach ($basket as $basketItem) {
	$item = $shipmentItemCollection->createItem($basketItem);
	$item->setQuantity($basketItem->getQuantity());
}

// Создание оплаты
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
	\Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());

Сохранение заказа

Если делать ajax форму, то тут можно вернуть не просто ID или ошибку, а подготовленный JSON для обработки на стороне frontend.

// Coхраняем заказ, возвращаем ID или ошибку
$result = $order->save();
if ($result->isSuccess()) {
    return $order->getId();
} else {
    return $result->getError();
}
Как видите, ничего сложного. В следующих статьях рассмотрим примеры разделения закза, создание заказа в один клик на основе вышеописанного кода и другое. Всем добра! 

Полезная статья?
(Голосов: 2, Рейтинг: 3.44)
Курсы от партнёров
Хотите освоить востребованную профессию? Воспользуйтесь предложениями от наших партнёров. Пройдите учебный курс по одному из популярных IT направлений.

Все курсы партёнров
Вам также могут понравиться
CSS курсоры

CSS курсоры

В статье рассмотрены возможности изменения курсоров пользователя при помощи CSS

Работа с регистром строк в php

Работа с регистром строк в php

В статье рассмотрены примеры работы с регистром строк в языке PHP, проверка регистра, изменение, инверсия

Работа с циклами в PHP

Работа с циклами в PHP

В статье рассмотрены примеры работы с циклами в PHP


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке