В работе с модулем имеется возможность использования следующих обработчиков событий:
Константа класса nc_payment_system | Описание события |
---|---|
EVENT_ON_INIT | инициализация класса платёжной системы |
EVENT_BEFORE_PAY_REQUEST | перед отправкой формы платежа |
EVENT_AFTER_PAY_REQUEST | после отправки формы платежа |
EVENT_ON_PAY_REQUEST_ERROR | ошибка отправки формы |
EVENT_BEFORE_PAY_CALLBACK | перед обработкой ответа от платёжной системы |
EVENT_AFTER_PAY_CALLBACK | после обработки ответа от платёжной системы |
EVENT_ON_PAY_CALLBACK_ERROR | ошибка в ответе от платёжной системы |
EVENT_ON_PAY_SUCCESS | платеж прошёл успешно |
EVENT_ON_PAY_FAILURE | ошибка при оплате на стороне платёжной системы |
Методы-слушатели должны принимать следующие параметры: nc_payment_system $payment_system
, [nc_payment_invoice $invoice]
.
Заготовка класса для обработки событий модуля «Приём платежей»:
/** * Класс обработки событий модуля «Приём платежей» */ class my_payment_event_listener { /** * При создании экземпляра класса он будет зарегистрирован в качестве * обработчика событий «успешная оплата» и «ошибка при оплате» */ public function __construct() { $event = $nc_core = nc_core::get_object()->event; $event->bind($this, array(nc_payment_system::EVENT_ON_PAY_SUCCESS => 'on_payment_success')); $event->bind($this, array(nc_payment_system::EVENT_ON_PAY_FAILURE => 'on_payment_failure')); } /** * Обработчик события «успешная оплата» * @param nc_payment_system $payment_system экземпляр класса платёжной системы * @param nc_payment_invoice|null $invoice счёт на оплату */ public function on_payment_success(nc_payment_system $payment_system, nc_payment_invoice $invoice = null) { // действия после оплаты // дополнительные сведения о счёте можно получить из $invoice: if ($invoice) { $invoice->get_id(); // идентификатор счёта $invoice->get('order_source'); // источник счёта, указанный при его создании $invoice->get('order_id'); // идентификатор оплачиваемого объекта, указанный при создании счёта } } /** * Обработчик события «ошибка при оплате» * @param nc_payment_system $payment_system экземпляр класса платёжной системы * @param nc_payment_invoice|null $invoice счёт на оплату */ public function on_payment_failure(nc_payment_system $payment_system, nc_payment_invoice $invoice = null) { // действия в случае если оплата не удалась } }
Для инициализации класса-слушателя используйте событие AFTER_MODULES_LOADED:
// например, в /netcat/modules/default/function.inc.php: // инициализация слушателя событий модуля «Приём платежей» nc_core::get_object()->event->add_listener(nc_event::AFTER_MODULES_LOADED, function() { new my_payment_event_listener(); });