vendor/shopware/core/Checkout/Payment/DataAbstractionLayer/PaymentHandlerIdentifierSubscriber.php line 23

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Checkout\Payment\DataAbstractionLayer;
  3. use Shopware\Core\Checkout\Payment\Cart\PaymentHandler\AsynchronousPaymentHandlerInterface;
  4. use Shopware\Core\Checkout\Payment\Cart\PaymentHandler\PreparedPaymentHandlerInterface;
  5. use Shopware\Core\Checkout\Payment\Cart\PaymentHandler\SynchronousPaymentHandlerInterface;
  6. use Shopware\Core\Checkout\Payment\PaymentEvents;
  7. use Shopware\Core\Checkout\Payment\PaymentMethodEntity;
  8. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
  11. class PaymentHandlerIdentifierSubscriber implements EventSubscriberInterface
  12. {
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [
  16.             PaymentEvents::PAYMENT_METHOD_LOADED_EVENT => 'formatHandlerIdentifier',
  17.         ];
  18.     }
  19.     public function formatHandlerIdentifier(EntityLoadedEvent $event): void
  20.     {
  21.         /** @var PaymentMethodEntity $entity */
  22.         foreach ($event->getEntities() as $entity) {
  23.             $this->setPaymentMethodHandlerRuntimeFields($entity);
  24.             $explodedHandlerIdentifier explode('\\'$entity->getHandlerIdentifier());
  25.             $last $explodedHandlerIdentifier[\count($explodedHandlerIdentifier) - 1];
  26.             $entity->setShortName((new CamelCaseToSnakeCaseNameConverter())->normalize($last));
  27.             if (\count($explodedHandlerIdentifier) < 2) {
  28.                 $entity->setFormattedHandlerIdentifier($entity->getHandlerIdentifier());
  29.                 continue;
  30.             }
  31.             /** @var string|null $firstHandlerIdentifier */
  32.             $firstHandlerIdentifier array_shift($explodedHandlerIdentifier);
  33.             $lastHandlerIdentifier array_pop($explodedHandlerIdentifier);
  34.             if ($firstHandlerIdentifier === null || $lastHandlerIdentifier === null) {
  35.                 continue;
  36.             }
  37.             $formattedHandlerIdentifier 'handler_'
  38.                 mb_strtolower($firstHandlerIdentifier)
  39.                 . '_'
  40.                 mb_strtolower($lastHandlerIdentifier);
  41.             $entity->setFormattedHandlerIdentifier($formattedHandlerIdentifier);
  42.         }
  43.     }
  44.     private function setPaymentMethodHandlerRuntimeFields(PaymentMethodEntity $entity): void
  45.     {
  46.         $handlerIdentifier $entity->getHandlerIdentifier();
  47.         if (\is_a($handlerIdentifierSynchronousPaymentHandlerInterface::class, true)) {
  48.             $entity->setSynchronous(true);
  49.         }
  50.         if (\is_a($handlerIdentifierAsynchronousPaymentHandlerInterface::class, true)) {
  51.             $entity->setAsynchronous(true);
  52.         }
  53.         if (\is_a($handlerIdentifierPreparedPaymentHandlerInterface::class, true)) {
  54.             $entity->setPrepared(true);
  55.         }
  56.     }
  57. }