src/Service/PaymentSystem/Listener/ECPayListener.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\Service\PaymentSystem\Listener;
  3. use App\Controller\Merchant\Payment\Common\AbstractNotificationController;
  4. use App\DTO\PaymentSystem\Config\ECPayPaymentSystemConfigDTO;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  7. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  8. class ECPayListener
  9. {
  10.     /**
  11.      * Override response to '1|OK' for ecpay
  12.      *
  13.      * @var bool
  14.      */
  15.     private bool $overrideResponse false;
  16.     /**
  17.      * Before controller starts detect order id in case it is stripe payment processor
  18.      *
  19.      * @param ControllerEvent $event
  20.      */
  21.     public function onKernelController(ControllerEvent $event)
  22.     {
  23.         $this->overrideResponse false;
  24.         $controller $event->getController();
  25.         if (is_array($controller)) {
  26.             $controller $controller[0];
  27.         }
  28.         if (!($controller instanceof AbstractNotificationController)) {
  29.             return;
  30.         }
  31.         if ($event->getRequest()->get('paymentSystem') !== ECPayPaymentSystemConfigDTO::PAYMENT_SYSTEM_KEY) {
  32.             return;
  33.         }
  34.         $this->overrideResponse true;
  35.     }
  36.     /**
  37.      * On response
  38.      *
  39.      * @param ResponseEvent $event
  40.      */
  41.     public function onResponse(ResponseEvent $event): void
  42.     {
  43.         if ($this->overrideResponse) {
  44.             $event->setResponse(new Response('1|OK'));
  45.         }
  46.     }
  47. }