Пример оформления заказа в 1 клик на D7

Пример оформления заказа в 1 клик на D7

10114
15.03.2017
13.05.2017

Данный пример оформления заказа в один клик был предложен техподдержкой 1С-Битрикс одному из партнеров

Привожу текст без изменений, как в первоисточнике. Сам, пока что, не использовал данный код, когда появится необходимость, возможно, добавлю комментариев по коду.

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

global $USER;
use Bitrix\Main,
    Bitrix\Main\Loader,
    Bitrix\Main\Config\Option,
    Bitrix\Sale,
    Bitrix\Sale\Order,
    Bitrix\Main\Application,
    Bitrix\Sale\DiscountCouponsManager;

if (!Loader::IncludeModule('sale'))
    die();

$request = Application::getInstance()->getContext()->getRequest();
    global $USER, $APPLICATION;

    $siteId = \Bitrix\Main\Context::getCurrent()->getSite();

    $currencyCode = Option::get('sale', 'default_currency', 'RUB');

    DiscountCouponsManager::init();

    $registeredUserID = $USER->GetID();

    $basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), Bitrix\Main\Context::getCurrent()->getSite());


    if ($item = $basket->getExistsItem('catalog', 73)) {
        $item->setField('QUANTITY', $item->getQuantity() + $quantity);
    } else {
        $item = $basket->createItem('catalog', 73);
        $item->setFields(array(
            'QUANTITY' => 1,
            'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
            'LID' => \Bitrix\Main\Context::getCurrent()->getSite(),
            'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
        ));
    }
    $basket->save();

    $order = Order::create($siteId, $registeredUserID);
    $order->setPersonTypeId(1);
    $basket = Sale\Basket::loadItemsForFUser(\CSaleBasket::GetBasketUserID(), Bitrix\Main\Context::getCurrent()->getSite())->getOrderableItems();

    $order->setBasket($basket);

    /*Shipment*/
    $shipmentCollection = $order->getShipmentCollection();
    $shipment = $shipmentCollection->createItem();
    $shipment->setFields(array(
        'DELIVERY_ID' => 4,
        'DELIVERY_NAME' => 'Самовывоз',
        'CURRENCY' => $order->getCurrency()
    ));


    $shipmentItemCollection = $shipment->getShipmentItemCollection();

    foreach ($order->getBasket() as $item)
    {
        $shipmentItem = $shipmentItemCollection->createItem($item);
        $shipmentItem->setQuantity($item->getQuantity());
    }


    /*Payment*/
    $paymentCollection = $order->getPaymentCollection();
    $extPayment = $paymentCollection->createItem();
    $extPayment->setFields(array(
        'PAY_SYSTEM_ID' => 3,
        'PAY_SYSTEM_NAME' => 'Наличные',
        'SUM' => $order->getPrice()
    ));

    /**/
    $order->doFinalAction(true);
    
	$propertyCollection = $order->getPropertyCollection();

    $propertyCollection = $order->getPropertyCollection();
		

		foreach ($propertyCollection->getGroups() as $group)
		{
			
			foreach ($propertyCollection->getGroupProperties($group['ID']) as $property)
			{

                $p = $property->getProperty();
                if( $p["CODE"] == "CONTACT_PERSON")
                    $property->setValue("VASYA");

			}
		}



    $order->setField('CURRENCY', $currencyCode);
    $order->setField('COMMENTS', 'Заказ оформлен через АПИ. ' . $comment);
    $order->save();
    $orderId = $order->GetId();

    if($orderId > 0){
        echo "Ваш заказ оформлен";
    }
    else{
        echo "Ошибка оформления";
    }

Источник: https://github.com/studiofact/wiki-bitrix/wiki/Заказ-в-один-клик


Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

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

captcha

Возврат к списку