Давайте рассмотрим пример создание заказа средствами 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();
}
Как видите, ничего сложного. В следующих статьях рассмотрим примеры разделения закза, создание заказа в один клик на основе вышеописанного кода и другое. Всем добра! 

Полезная статья?
(Голосов: 4, Рейтинг: 3.66)
Вам также могут понравиться
Обновление остатков товара на складе в 1С Битрикс

Обновление остатков товара на складе в 1С Битрикс

Как правильно обновлять остатки товара на сайта под управлением CMS 1С Битрикс.

Английский для программистов

Английский для программистов

Почему IT-специалисту необходимо освоить английский язык? Разбираем в статье.

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как правильно подключать стили и скрипты к шаблону 1С Битрикс.


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