Не пропусти свежие посты, подпишись:
Давайте рассмотрим пример создание заказа средствами 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, проверка регистра, изменение, инверсия


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