Я использую Symfony с PayumBundle и payum-redsys, чтобы принимать платежи через испанский шлюз Redsys.
После каждой попытки оплаты (успешной или нет) Redsys отправляет уведомление на URL-адрес. Я хочу поймать это уведомление и предпринять действия в соответствии с его полезной нагрузкой (был ли платеж успешным? какой номер заказа? и т. д.). Например, предположим, что если платеж прошел успешно, я хочу пометить соответствующий заказ в базе данных как оплаченный, в противном случае я хочу зарегистрировать ошибку. Что-то типа:
if ($paymentSuccessful) {
$order = $orderRep->find($notif['Ds_Order']);
$order->setDatePaid($notif['Ds_Date']);
$em->flush();
} else {
$logger->error('Failed payment for order ' . $notif['Ds_Order']);
}
Если я позволю Payum обрабатывать запрос на уведомление с его значением по умолчанию NotifyController
, он выполнит автоматическую проверку токена, декодирование параметров и т. д., что идеально, но я не вижу, как выполнить свою собственную пользовательскую операцию (см. код выше), отсюда и название этого вопроса.