Доступные события

  • beforeProcessRequest — вызывается перед обработкой нотификации при оплате через интернет-магазин. Если обработчик события вернёт ошибочный результат, то дальнейшая обработка нотификаций не производится.

  • onNotification — вызывается при получении нотификации при оплате через компонент без использования модуля "Интернет-магазин".

  • afterGetInitParams — позволяет модифицировать параметры перед формированием ссылки на оплату.

  • afterBuildReceipt — вызывается после создания массива чека.

  • onBeforeActionAuthorize — перед обработкой авторизованной оплаты

  • onBeforeActionRefund — перед запуском логики обработки оплаты, по которой сделали возврат

  • onBeforeActionPay — перед обработкой подтверждённой оплаты оплаты

  • onBeforeActionFail — перед обработкой оплаты, платеж по которой не прошёл.


Пример кастомизации данных, передаваемых для печати чека

Заменяем все позиции на одну общую.

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('rover.tinkoff', 'afterBuildReceipt', array('RoverReceipt', 'fix'));

class RoverReceipt
{
    /**
     * @param \Bitrix\Main\Event $event
     * @return \Bitrix\Main\EventResult
     */
    function fix(Bitrix\Main\Event $event)
    {
        /** @var \Bitrix\Sale\Order $order */
        $parameters = $event->getParameters();
        $order      = $parameters[0];
        $fields     = $parameters[1];
        $items      = $fields['Items'];

        $fields['Items'] =  [
            [
                'Name'      => 'Гайки и болты',
                'Price'     => $order->getPrice() * 100,
                'Quantity'  => 1,
                'Amount'    => $order->getPrice() * 100,
                'Tax'       => $items[0]['Tax']
            ]
        ];

        $parameters[1] = $fields;

        return new Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $parameters, 'rover.tinkoff');
    }
}

Пример обработчика для смены статуса заказа при оплате, если он находится в статусе "новый"

\Bitrix\Main\EventManager::getInstance()->addEventHandler('rover.tinkoff', 'onBeforeActionPay', function (\Bitrix\Main\Event $event){
    $params     = $event->getParameters();
    $payment    = $params[1];
    $order      = $payment->getOrder();

    // если заказ не в статусе "новый", возвращаем свой статус и стандартная обработка не производится
    // иначе после обработчика продолжится выполнение стандартной логики
    if ($order->getField('STATUS_ID') != 'N')
        $params[2] = \Bitrix\Sale\PaySystem\ServiceResult::MONEY_COMING;

    return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $params);
});⁠