custom/plugins/MolliePayments/src/Subscriber/PaymentStateSubscriber.php line 48

Open in your IDE?
  1. <?php
  2. namespace Kiener\MolliePayments\Subscriber;
  3. use Kiener\MolliePayments\Exception\CouldNotSetRefundAtMollieException;
  4. use Kiener\MolliePayments\Exception\MissingSalesChannelInOrder;
  5. use Kiener\MolliePayments\Facade\SetMollieOrderRefunded;
  6. use Kiener\MolliePayments\Service\LoggerService;
  7. use Monolog\Logger;
  8. use Shopware\Core\System\StateMachine\Aggregation\StateMachineTransition\StateMachineTransitionActions;
  9. use Shopware\Core\System\StateMachine\Event\StateMachineStateChangeEvent;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. class PaymentStateSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var LoggerService
  15.      */
  16.     private $loggerService;
  17.     /**
  18.      * @var SetMollieOrderRefunded
  19.      */
  20.     private $setMollieOrderRefunded;
  21.     /**
  22.      * Creates a new instance of PaymentMethodSubscriber.
  23.      *
  24.      * @param SetMollieOrderRefunded $setMollieOrderRefunded
  25.      * @param LoggerService $loggerService
  26.      */
  27.     public function __construct(
  28.         SetMollieOrderRefunded $setMollieOrderRefunded,
  29.         LoggerService $loggerService
  30.     )
  31.     {
  32.         $this->setMollieOrderRefunded $setMollieOrderRefunded;
  33.         $this->loggerService $loggerService;
  34.     }
  35.     public static function getSubscribedEvents()
  36.     {
  37.         return [
  38.             'state_machine.order_transaction.state_changed' => 'onOrderTransactionChanged',
  39.         ];
  40.     }
  41.     public function onOrderTransactionChanged(StateMachineStateChangeEvent $event)
  42.     {
  43.         if ($event->getTransitionSide() !== StateMachineStateChangeEvent::STATE_MACHINE_TRANSITION_SIDE_ENTER) {
  44.             return;
  45.         }
  46.         $transitionName $event->getTransition()->getTransitionName();
  47.         if ($transitionName != StateMachineTransitionActions::ACTION_REFUND) {
  48.             return;
  49.         }
  50.         try {
  51.             $this->setMollieOrderRefunded->setRefunded($event->getTransition()->getEntityId(), $event->getContext());
  52.         } catch (CouldNotSetRefundAtMollieException MissingSalesChannelInOrder $e) {
  53.             $this->loggerService->addEntry(
  54.                 $e->getMessage(),
  55.                 $event->getContext(),
  56.                 $e,
  57.                 [],
  58.                 Logger::ERROR
  59.             );
  60.         }
  61.     }
  62. }