В одном из проекте было важно учесть чтобы по умолчанию в системе Битрикс был установлен способ оплаты по Сбербанку (экваринг), но в тоже время не дать посетителю сайту произвести оплату онлайн, а оплата происходила после предоставление ссылки на оплату через панель администрирования. Мол ссылка оплаты формировалась с администраторской части.
Что нам пришлось сделать, мы написали обработчик который делал подмену способа оплата на другой способ оплаты, тем самым у пользователя не появлялась возможность получить доступ к эварингу сразу, но в тоже время сам экваринг управлялся с админки
Что нам пришлось сделать, мы написали обработчик который делал подмену способа оплата на другой способ оплаты, тем самым у пользователя не появлялась возможность получить доступ к эварингу сразу, но в тоже время сам экваринг управлялся с админки
\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);
}
}
}