app/Plugin/ZeusPayment42/ZeusPaymentEvent.php line 269

Open in your IDE?
  1. <?php
  2. namespace Plugin\ZeusPayment42;
  3. use Eccube\Common\EccubeConfig;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Eccube\Entity\Master\OrderStatus;
  6. use Eccube\Event\TemplateEvent;
  7. use Plugin\ZeusPayment42\Service\Method\EbankPayment;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Plugin\ZeusPayment42\Repository\ConfigRepository;
  10. use Plugin\ZeusPayment42\Service\ZeusPaymentService;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  13. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  14. use Eccube\Service\CartService;
  15. use Eccube\Service\OrderHelper;
  16. use Eccube\Repository\OrderRepository;
  17. use Plugin\ZeusPayment42\Service\Method\CvsPayment;
  18. use Symfony\Component\Routing\RouterInterface;
  19. use Symfony\Component\HttpFoundation\RedirectResponse;
  20. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  21. /*
  22.  * イベント処理
  23.  */
  24. class ZeusPaymentEvent implements EventSubscriberInterface
  25. {
  26.     /**
  27.      * @var ConfigRepository
  28.      */
  29.     protected $configRepository;
  30.     protected $paymentService;
  31.     protected $eccubeConfig;
  32.     protected $cartService;
  33.     protected $orderHelper;
  34.     protected $orderRepository;
  35.     protected $entityManager;
  36.     protected $router;
  37.     protected $session;
  38.     public function __construct(
  39.         ConfigRepository $configRepository,
  40.         ZeusPaymentService $paymentService,
  41.         EccubeConfig $eccubeConfig,
  42.         CartService $cartService,
  43.         OrderHelper $orderHelper,
  44.         OrderRepository $orderRepository,
  45.         EntityManagerInterface $entityManager,
  46.         RouterInterface $router,
  47.         SessionInterface $session
  48.     ) {
  49.         $this->configRepository $configRepository;
  50.         $this->paymentService $paymentService;
  51.         $this->eccubeConfig $eccubeConfig;
  52.         $this->cartService $cartService;
  53.         $this->orderHelper $orderHelper;
  54.         $this->orderRepository $orderRepository;
  55.         $this->entityManager $entityManager;
  56.         $this->router $router;
  57.         $this->session $session;
  58.     }
  59.     public static function getSubscribedEvents()
  60.     {
  61.         return [
  62.             'Shopping/index.twig' => 'onShoppingIndexTwig',
  63.             'Shopping/confirm.twig' => 'onShoppingConfirmTwig',
  64.             '@admin/Order/index.twig' => 'adminOrderIndexTwig',
  65.             '@admin/Order/edit.twig' => 'adminOrderEditTwig',
  66.             KernelEvents::CONTROLLER => array('onKernelController'130)
  67.         ];
  68.     }
  69.     public function onShoppingIndexTwig(TemplateEvent $event)
  70.     {
  71.         $event->addSnippet('@ZeusPayment42/credit_input_move_point.twig');
  72.         $config $this->configRepository->get();
  73.         if (!$config || !$config->getCreditPayment()) {
  74.             return;
  75.         }
  76.         $parameters $event->getParameters();
  77.         $zeus_credit = array();
  78.         $zeus_credit['credit_class_name'] = \Plugin\ZeusPayment42\Service\Method\CreditPayment::class;
  79.         $zeus_credit['config'] = $config;
  80.         $order $parameters['Order'];
  81.         $payment $order->getPayment();
  82.         if (!$payment || $payment->getMethodClass() != $zeus_credit['credit_class_name']) {
  83.             return;
  84.         }
  85.         $zeus_credit['payment_id'] = $payment->getId();
  86.         $shippings $payment->getPaymentOptions();
  87.         $zeus_credit['shippings'] = "[]";
  88.         if ($shippings) {
  89.             $aShippings = [];
  90.             foreach ($shippings as $shipping) {
  91.                 $aShippings[] = $shipping->getDeliveryId();
  92.             }
  93.             $zeus_credit['shippings'] = "[" implode(','$aShippings) . "]";
  94.         }
  95.         //if this field not exists,do not display
  96.         if (!$parameters['form']['ZeusCreditPaymentCardNo']) {
  97.             return;
  98.         }
  99.         $event->addSnippet('@ZeusPayment42/credit_input.twig');
  100.         $parameters $event->getParameters();
  101.         $quickOK $this->paymentService->isQuickChargeOK($order$config->getCreditPayment());
  102.         if ($quickOK) {
  103.             $lastMaskedCard $this->paymentService->fetchMaskedCard($order$config);
  104.             $zeus_credit['lastMaskedCard'] = $lastMaskedCard;
  105.         } else {
  106.             $zeus_credit['lastMaskedCard'] = '';
  107.         }
  108.         $zeus_credit['isQuickChargeOK'] = $quickOK;
  109.         $parameters['zeus_credit'] = $zeus_credit;
  110.         $event->setParameters($parameters);
  111.     }
  112.     public function onShoppingConfirmTwig(TemplateEvent $event)
  113.     {
  114.         $event->addSnippet('@ZeusPayment42/credit_confirm_move_point.twig');
  115.         $config $this->configRepository->get();
  116.         if (!$config || !$config->getCreditPayment()) {
  117.             return;
  118.         }
  119.         $this->csvRenameButton($event$config);
  120.         $this->ebankRenameButton($event$config);
  121.         $parameters $event->getParameters();
  122.         $zeus_credit = array();
  123.         $zeus_credit['credit_class_name'] = \Plugin\ZeusPayment42\Service\Method\CreditPayment::class;
  124.         $zeus_credit['config'] = $config;
  125.         $order $parameters['Order'];
  126.         $payment $order->getPayment();
  127.         if (!$payment || $payment->getMethodClass() != $zeus_credit['credit_class_name']) {
  128.             return;
  129.         }
  130.         $zeus_credit['payment_method'] = $payment->getMethod();
  131.         $event->addSnippet('@ZeusPayment42/credit_confirm.twig');
  132.         $parameters $event->getParameters();
  133.         $formview $parameters['form'];
  134.         $zeus_credit['mask_cark_no'] = $this->paymentService->getMaskedCard($formview['ZeusCreditPaymentCardNo']->vars['value']);
  135.         $paras $this->eccubeConfig['zeus_credit_options'];
  136.         $methods $paras['payment_choices'];
  137.         $paymentMethod $formview['ZeusCreditPaymentMethod']->vars['value'];
  138.         $zeus_credit['payment_method_name'] = $methods[$paymentMethod];
  139.         $quickOK $this->paymentService->isQuickChargeOK($order$config->getCreditPayment());
  140.         if ($quickOK) {
  141.             $lastMaskedCard $this->paymentService->fetchMaskedCard($order$config);
  142.             $zeus_credit['lastMaskedCard'] = $lastMaskedCard;
  143.         } else {
  144.             $zeus_credit['lastMaskedCard'] = '';
  145.         }
  146.         $zeus_credit['isQuickChargeOK'] = $quickOK;
  147.         $parameters['zeus_credit'] = $zeus_credit;
  148.         $event->setParameters($parameters);
  149.     }
  150.     private function csvRenameButton($event$config)
  151.     {
  152.         $parameters $event->getParameters();
  153.         $order $parameters['Order'];
  154.         $payment $order->getPayment();
  155.         if (!$payment || $payment->getMethodClass() != \Plugin\ZeusPayment42\Service\Method\CvsPayment::class) {
  156.             return;
  157.         }
  158.         $event->addSnippet('@ZeusPayment42/cvs_confirm_rename_button.twig');
  159.     }
  160.     private function ebankRenameButton($event$config)
  161.     {
  162.         $parameters $event->getParameters();
  163.         $order $parameters['Order'];
  164.         $payment $order->getPayment();
  165.         if (!$payment || $payment->getMethodClass() != \Plugin\ZeusPayment42\Service\Method\EbankPayment::class) {
  166.             return;
  167.         }
  168.         $event->addSnippet('@ZeusPayment42/ebank_confirm_rename_button.twig');
  169.     }
  170.     public function onKernelController(ControllerEvent $event)
  171.     {
  172.         $request $event->getRequest();
  173.         ///only front page
  174.         if (strpos($request->getRequestUri(), $this->eccubeConfig['eccube_admin_route']) !== false) {
  175.             return;
  176.         }
  177.         $preOrderId $this->cartService->getPreOrderId();
  178.         $order $this->orderRepository->findOneBy([
  179.             'pre_order_id' => $preOrderId
  180.             //'OrderStatus' => OrderStatus::PENDING,
  181.         ]);
  182.         if (!$order) {
  183.             return;
  184.         }
  185.         $payment $order->getPayment();
  186.         if (!$payment) {
  187.             return;
  188.         }
  189.         if ($payment->getMethodClass() != CvsPayment::class && $payment->getMethodClass() != EbankPayment::class) {
  190.             return;
  191.         }
  192.         if ($order->getOrderStatus()->getId() != OrderStatus::PENDING && $order->getOrderStatus()->getId() != OrderStatus::PROCESSING) {
  193.             $saveOrderErr "注文情報作成失敗しました。";
  194.             $note $order->getNote();
  195.             $saveOrderFailed = ($saveOrderErr === substr($note, -strlen($saveOrderErr)));
  196.             log_info('[注文処理] カートをクリアします.', [$order->getId()]);
  197.             $this->cartService->clear();
  198.             if ($saveOrderFailed) {
  199.                 $msg '';
  200.                 if (strlen($order->getNote()) > 0) {
  201.                     $str $order->getNote() . "\r\n";
  202.                 } else {
  203.                     $str "";
  204.                 }
  205.                 $msg "支払手続きは完了している可能性がありますので、サイトまでお問い合わせください。";
  206.                 $order->setNote($str "メッセージ表示中:" $msg);
  207.                 $order->setOrderStatus($this->entityManager->getRepository(OrderStatus::class)->find(OrderStatus::PENDING));
  208.                 $this->entityManager->persist($order);
  209.                 $this->entityManager->flush();
  210.                 $this->entityManager->commit();
  211.                 $this->session->getFlashBag()->add('eccube.front.error''購入処理でエラーが発生しました。' $msg);
  212.                 //$event->setResponse(new RedirectResponse($this->router->generate('shopping_error')));
  213.                 $redirect = new RedirectResponse($this->router->generate('shopping_error'));
  214.                 $redirect->send();
  215.             }
  216.         }
  217.     }
  218.     public function adminOrderIndexTwig(TemplateEvent $event)
  219.     {
  220.         $event->addSnippet('@ZeusPayment42/admin/order_index_js.twig');
  221.     }
  222.     public function adminOrderEditTwig(TemplateEvent $event)
  223.     {
  224.         $event->addSnippet('@ZeusPayment42/admin/order_edit_js.twig');
  225.     }
  226. }