Событие при оплате заказа

Модуль расширенного управления меню для битрикс

Март 13, 2020

Теги: События, Магазин

Выполнение кода при полной или частичной оплате заказа.

Выполнение кода при полной оплате заказа (событие "OnSaleOrderSaved"):


namespace Partner;


\
Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'sale'
    
'OnSaleOrderSaved'
    
'\Partner\MyClass::onSaleOrderSaved'
); 

class 
MyClass 
{
    function 
onSaleOrderSaved(\Bitrix\Main\Event $event)
    {
        
$order $event->getParameter("ENTITY");
        
$oldValues $event->getParameter("VALUES");
        if(!
$order->getField('PAYED') || !$oldValues['PAYED'] || !(($order->getField('PAYED')=='Y') && ($oldValues['PAYED']=='N')))
            return;
        
// выполняем код
    
}    
}

Событие при оплате конкретного платежа (оплата всего заказа может состоять из нескольких оплат):


namespace Partner;


\
Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'sale'
    
'OnSalePaymentEntitySaved'
    
'\Partner\MyClass:: onSalePaymentEntitySaved'
); 

class 
MyClass 
{
    function 
onSalePaymentEntitySaved(\Bitrix\Main\Event $event)
    {
        
$payment $event->getParameter("ENTITY");
        
$oldValues $event->getParameter("VALUES");

        if(
$payment->getField('PAY_SYSTEM_ID')==\Bitrix\Sale\PaySystem\Manager::getInnerPaySystemId()) 
            return; 
// для внутренних оплат ничего не делаем

        
if(!($oldValues["PAID"] == 'N' && $payment->getField('PAID') == 'Y'))
            return;

        
$order $payment->getOrder(); // объект заказа
        
$paymentCollection $order->getPaymentCollection(); // полная коллекция оплат заказа

        // выполняем код
    
}    
}

См. также:

← Переход к списку