Сергей Эсауленко

Оплата товара по ссылки предоставленной менеджером сайта Битрикс

В одном из проекте было важно учесть чтобы по умолчанию в системе Битрикс был установлен способ оплаты по Сбербанку (экваринг), но в тоже время не дать посетителю сайту произвести оплату онлайн, а оплата происходила после предоставление ссылки на оплату через панель администрирования. Мол ссылка оплаты формировалась с администраторской части.

Что нам пришлось сделать, мы написали обработчик который делал подмену способа оплата на другой способ оплаты, тем самым у пользователя не появлялась возможность получить доступ к эварингу сразу, но в тоже время сам экваринг управлялся с админки

\Bitrix\Main\Context::getCurrent()->getRequest()->isAdminSection()
- данное условие позволяет проверять, находимся ли в панели администрирования пользователь в данный момент времени или нет.

$eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'OnSaleOrderBeforeSavedCustom');
function OnSaleOrderBeforeSavedCustom(\Bitrix\Main\Event $event)
{

$order = $event->getParameter("ENTITY");

//Собираем свойства заказа
$orderProps = [];
/** @var Bitrix\Crm\Order\PropertyValue $orderProp */

$propertyCollection = $order->getPropertyCollection();
foreach ($propertyCollection as $propId => $orderProp) {
if (!empty($orderProp->getField("CODE"))) {
$orderProps[$orderProp->getField('CODE')] = trim($orderProp->getValue());
}
}




/** @var $paymentCollection \Bitrix\Sale\PaymentCollection */
$paymentCollection = $order->getPaymentCollection();
foreach ($paymentCollection as $payment) {
/** @var $payment \Bitrix\Sale\Payment */

/** @var $paySystem \Bitrix\Sale\PaySystem\Service */
$paySystem = $payment->getPaySystem();
if (!is_null($paySystem) && !$paySystem->isCash() && !\Bitrix\Main\Context::getCurrent()->getRequest()->isAdminSection()) {
//проставляем по умолчанию "расчет доставки"
$payment->setField("PAY_SYSTEM_ID", 11);
}
}
}



06.07.2021
1C-Битрикс или Wordpress: какую CMS выбрать для лучшей работы сайта?