custom/plugins/NetsCheckout/src/Subscriber/CheckoutFinishPageSubscriber.php line 48

Open in your IDE?
  1. <?php
  2. namespace Nets\Checkout\Subscriber;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  5. use Shopware\Storefront\Page\Checkout\Finish\CheckoutFinishPageLoadedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Nets\Checkout\Service\Easy\Api\TransactionDetailsStruct;
  8. use Shopware\Core\Framework\Context;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. class CheckoutFinishPageSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var EntityRepositoryInterface
  14.      */
  15.     private $orderRepository;
  16.     /**
  17.      * @var RequestStack
  18.      */
  19.     private $requestStack;
  20.     /**
  21.      * CheckoutFinishPageSubscriber constructor.
  22.      * @param EntityRepositoryInterface $orderRepository
  23.      * @param RequestStack $requestStack
  24.      */
  25.     public function __construct(EntityRepositoryInterface $orderRepositoryRequestStack $requestStack)
  26.     {
  27.         $this->orderRepository $orderRepository;
  28.         $this->requestStack $requestStack;
  29.     }
  30.     /**
  31.      * @return string[]
  32.      */
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             CheckoutFinishPageLoadedEvent::class => 'onCheckoutFinishLoaded',
  37.         ];
  38.     }
  39.     /**
  40.      * @param CheckoutFinishPageLoadedEvent $event
  41.      */
  42.     public function onCheckoutFinishLoaded(CheckoutFinishPageLoadedEvent $event)
  43.     {
  44.         $paymentStruct = new TransactionDetailsStruct();
  45.         $page $event->getPage();
  46.         $context Context::createDefaultContext();
  47.         $criteria = new Criteria([$this->requestStack->getCurrentRequest()->get('orderId')]);
  48.         $criteria->addAssociation('transactions');
  49.         $order $this->orderRepository->search($criteria$context)->first();
  50.         $transactionCollection $order->getTransactions();
  51.         $transaction $transactionCollection->first();
  52.         $customFields $transaction->getCustomFields();
  53.         if (isset($customFields['nets_easy_payment_details']['transaction_id'])) {
  54.             $paymentStruct->assign(['transaction_id' => $customFields['nets_easy_payment_details']['transaction_id'] ]);
  55.             $page->addExtension('nets_transaction_id'$paymentStruct);
  56.         }
  57.     }
  58. }