Частичная оплата, разделение оплаты на 2 при оформлении заказа в битрикс 15+
Реализация частичной оплаты в битрикс 15+
Краткое описание
Вешаем обработчик на оформление заказа, когда он уже создан и сохранен, получаем параметры
события, получаем коллекцию платежек, определяем сумму заказа, делим как нам необходимо,
проверяем, что 1 платежка только, далее по объекту платежки получаем ид платежной системы,
по ид получаем заготовку для второй платежки, обновляем сумму первой платежки
создаем вторую платежку, устанавливаем сумму платежки, добавляем в колекцию платежек, сохраняем
<?
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderEntitySaved',
'myFunction'
);
function myFunction(\Bitrix\Main\Event $event)
{
/** @var Order $order */
$order = $event->getParameter("ENTITY");
$pays = $order->getPaymentCollection();
$orderPrice = $order->getPrice();
$prePaidhalfPrice = ceil($orderPrice / 2);
$secondHalf = $orderPrice - $prePaidhalfPrice;
if(count($pays) == 1) {
foreach ($pays as $key => $pay) {
$paySystemId = $pay->getPaymentSystemId();
$paySystem = \Bitrix\Sale\PaySystem\Manager::getObjectById($paySystemId);
$pay->setField('SUM', $prePaidhalfPrice);
}
if(in_array($paySystemId, array('1', '2'))) {
$secondPayment = Bitrix\Sale\Payment::create($pays, $paySystem);
$secondPayment->setField('SUM', $secondHalf);
$pays->addItem($secondPayment);
$pays->save();
}
}
}
?>