app/Plugin/EccubePaymentLite4/EventListener/EventSubscriber/Front/Shopping/CreditCardInfoEventSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. namespace Plugin\EccubePaymentLite4\EventListener\EventSubscriber\Front\Shopping;
  3. use Eccube\Common\EccubeConfig;
  4. use Eccube\Entity\Order;
  5. use Eccube\Event\TemplateEvent;
  6. use Eccube\Repository\PaymentRepository;
  7. use Plugin\EccubePaymentLite4\Service\GmoEpsilonRequest\RequestGetUserInfoService;
  8. use Plugin\EccubePaymentLite4\Service\Method\Credit;
  9. use Plugin\EccubePaymentLite4\Service\Method\Reg_Credit;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\Form\FormView;
  12. class CreditCardInfoEventSubscriber implements EventSubscriberInterface
  13. {
  14.     /**
  15.      * @var RequestGetUserInfoService
  16.      */
  17.     private $requestGetUserInfoService;
  18.     /**
  19.      * @var EccubeConfig
  20.      */
  21.     private $eccubeConfig;
  22.     /**
  23.      * @var PaymentRepository
  24.      */
  25.     private $paymentRepository;
  26.     public function __construct(
  27.         RequestGetUserInfoService $requestGetUserInfoService,
  28.         EccubeConfig $eccubeConfig,
  29.         PaymentRepository $paymentRepository
  30.     ) {
  31.         $this->requestGetUserInfoService $requestGetUserInfoService;
  32.         $this->eccubeConfig $eccubeConfig;
  33.         $this->paymentRepository $paymentRepository;
  34.     }
  35.     public static function getSubscribedEvents()
  36.     {
  37.         return [
  38.             'Shopping/index.twig' => 'index',
  39.         ];
  40.     }
  41.     public function index(TemplateEvent $event)
  42.     {
  43.         /** @var Order $Order */
  44.         $Order $event->getParameter('Order');
  45.         if (!is_null($Order->getPayment()) &&
  46.             Credit::class !== $Order->getPayment()->getMethodClass() &&
  47.             Reg_Credit::class !== $Order->getPayment()->getMethodClass()) {
  48.             return;
  49.         }
  50.         // ゲスト購入の場合はクレジットカード情報を表示しない
  51.         if (is_null($Order->getCustomer())) {
  52.             return;
  53.         }
  54.         $results $this->requestGetUserInfoService->handle($Order->getCustomer()->getId());
  55.         $isRegisteredCreditCard true;
  56.         // クレジットカード情報が未登録の場合は、登録済みのクレジットカードのラジオボタンを表示しない
  57.         if ($results['status'] === 'NG') {
  58.             $RegCreditPayment $this->paymentRepository->findOneBy([
  59.                 'method_class' => Reg_Credit::class,
  60.             ]);
  61.             /** @var FormView $paymentFormView */
  62.             $paymentFormView $event->getParameter('form')['Payment'];
  63.             if (!is_null($RegCreditPayment) && !is_null($RegCreditPayment->getId())) {
  64.                 $paymentFormView->offsetUnset((string) $RegCreditPayment->getId());
  65.             }
  66.             $isRegisteredCreditCard false;
  67.         }
  68.         $event->setParameter('isRegisteredCreditCard'$isRegisteredCreditCard);
  69.         if (!$isRegisteredCreditCard) {
  70.             return;
  71.         }
  72.         $event->addSnippet('@EccubePaymentLite4/default/Shopping/credit_card_info.twig');
  73.         $event->setParameter('cardBrand'$results['cardBrand']);
  74.         $event->setParameter('cardNumberMask'$results['cardNumberMask']);
  75.         $event->setParameter('cardExpire'$results['cardExpire']);
  76.     }
  77. }