В работе с модулем имеется возможность использования следующих обработчиков событий:
| Константа класса 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();
});