app/Plugin/ZeusPayment42/ZeusPaymentEvent.php line 316

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 Customize\Entity\Master\OrderStatusExtend as OrderStatus;
  7. use Eccube\Event\TemplateEvent;
  8. use Eccube\Event\EccubeEvents;
  9. use Eccube\Event\EventArgs;
  10. use Plugin\ZeusPayment42\Service\Method\EbankPayment;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Plugin\ZeusPayment42\Repository\ConfigRepository;
  13. use Plugin\ZeusPayment42\Service\ZeusPaymentService;
  14. use Plugin\ZeusPayment42\Entity\Config;
  15. use Symfony\Component\HttpKernel\KernelEvents;
  16. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  17. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  18. use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
  19. use Eccube\Service\CartService;
  20. use Eccube\Service\OrderHelper;
  21. use Eccube\Repository\OrderRepository;
  22. use Plugin\ZeusPayment42\Service\Method\CvsPayment;
  23. use Symfony\Component\Routing\RouterInterface;
  24. use Symfony\Component\HttpFoundation\RedirectResponse;
  25. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  26. use Eccube\Request\Context;
  27. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  28. /*
  29.  * イベント処理
  30.  */
  31. class ZeusPaymentEvent implements EventSubscriberInterface
  32. {
  33.     /**
  34.      * @var ConfigRepository
  35.      */
  36.     protected $configRepository;
  37.     protected $paymentService;
  38.     protected $eccubeConfig;
  39.     protected $cartService;
  40.     protected $orderHelper;
  41.     protected $orderRepository;
  42.     protected $entityManager;
  43.     protected $router;
  44.     protected $session;
  45.     private $context;
  46.     private $eventDispatcher;
  47.     
  48.     public function __construct(
  49.         ConfigRepository $configRepository,
  50.         ZeusPaymentService $paymentService,
  51.         EccubeConfig $eccubeConfig,
  52.         CartService $cartService,
  53.         OrderHelper $orderHelper,
  54.         OrderRepository $orderRepository,
  55.         EntityManagerInterface $entityManager,
  56.         RouterInterface $router,
  57.         SessionInterface $session,
  58.         Context $context,
  59.         EventDispatcherInterface $eventDispatcher
  60.         )
  61.     {
  62.         $this->configRepository $configRepository;
  63.         $this->paymentService $paymentService;
  64.         $this->eccubeConfig $eccubeConfig;
  65.         $this->cartService $cartService;
  66.         $this->orderHelper $orderHelper;
  67.         $this->orderRepository $orderRepository;
  68.         $this->entityManager $entityManager;
  69.         $this->router $router;
  70.         $this->session $session;
  71.         $this->context $context;
  72.         $this->eventDispatcher $eventDispatcher;
  73.     }
  74.     
  75.     public static function getSubscribedEvents()
  76.     {
  77.         return [
  78.             'Shopping/index.twig' => 'onShoppingIndexTwig',
  79.             'Shopping/confirm.twig' => 'onShoppingConfirmTwig',
  80.             '@admin/Order/index.twig' => 'adminOrderIndexTwig',
  81.             '@admin/Order/edit.twig' => 'adminOrderEditTwig',
  82.             KernelEvents::CONTROLLER => array('onKernelController'130),
  83.             KernelEvents::CONTROLLER_ARGUMENTS => 'onKernelControllerArguments',
  84.         ];
  85.     }
  86.     
  87.     public function onShoppingIndexTwig(TemplateEvent $event)
  88.     {
  89.         $event->addSnippet('@ZeusPayment42/credit_input_move_point.twig');
  90.         
  91.         $config $this->configRepository->get();
  92.         if (!$config && !$config->getCreditPayment() && !$config->getLaterPayment()) {
  93.             return;
  94.         }
  95.         
  96.         $parameters $event->getParameters();
  97.         
  98.         
  99.         $zeus_credit = array();
  100.         $zeus_credit['credit_class_name'] = \Plugin\ZeusPayment42\Service\Method\CreditPayment::class;
  101.         $zeus_credit['config'] = $config;
  102.         $later = array();
  103.         $later['class_name'] = \Plugin\ZeusPayment42\Service\Method\LaterPayment::class;
  104.         $later['config'] = $config;
  105.         
  106.         $order $parameters['Order'];
  107.         $payment $order->getPayment();
  108.         if(!$payment){
  109.             return;
  110.         }
  111.         if($payment->getMethodClass() == $zeus_credit['credit_class_name']){
  112.             $zeus_credit['payment_id'] = $payment->getId();
  113.             $shippings $payment->getPaymentOptions();
  114.             $zeus_credit['shippings'] = "[]";
  115.             if ($shippings) {
  116.                 $aShippings = [];
  117.                 foreach ($shippings as $shipping) {
  118.                     $aShippings[] = $shipping->getDeliveryId();
  119.                 }
  120.                 $zeus_credit['shippings'] = "[" implode(','$aShippings) . "]";
  121.             }
  122.             
  123.             //if this field not exists,do not display
  124.             if (!$parameters['form']['ZeusCreditPaymentCardNo']) {
  125.                 return;
  126.             }
  127.             
  128.             $event->addSnippet('@ZeusPayment42/credit_input.twig');
  129.             $parameters $event->getParameters();
  130.             
  131.             $quickOK $this->paymentService->isQuickChargeOK($order$config->getCreditPayment());
  132.             if ($quickOK) {
  133.                 $lastMaskedCard $this->paymentService->fetchMaskedCard($order$config);
  134.                 $zeus_credit['lastMaskedCard'] = $lastMaskedCard;
  135.             } else {
  136.                 $zeus_credit['lastMaskedCard'] = '';
  137.             }
  138.             $zeus_credit['isQuickChargeOK'] = $quickOK;
  139.             $parameters['zeus_credit'] = $zeus_credit;
  140.             
  141.         }elseif($payment->getMethodClass() == $later['class_name']){
  142.             $later['payment_id'] = $payment->getId();
  143.             $event->addSnippet('@ZeusPayment42/later_input.twig');
  144.             $parameters $event->getParameters();
  145.             $parameters['later'] = $later;
  146.         }
  147.         $event->setParameters($parameters);
  148.     }
  149.     
  150.     public function onShoppingConfirmTwig(TemplateEvent $event)
  151.     {
  152.         $event->addSnippet('@ZeusPayment42/credit_confirm_move_point.twig');
  153.         
  154.         $config $this->configRepository->get();
  155.         
  156.         if (!$config && !$config->getCreditPayment() && !$config->getLaterPayment()) {
  157.             return;
  158.         }
  159.         
  160.         $this->csvRenameButton($event,$config);
  161.         $this->ebankRenameButton($event,$config);
  162.         $parameters $event->getParameters();
  163.         $zeus_credit = array();
  164.         $zeus_credit['credit_class_name'] = \Plugin\ZeusPayment42\Service\Method\CreditPayment::class;
  165.         $zeus_credit['config'] = $config;
  166.         $later = array();
  167.         $later['class_name'] = \Plugin\ZeusPayment42\Service\Method\LaterPayment::class;
  168.         $later['config'] = $config;
  169.         
  170.         $order $parameters['Order'];
  171.         $payment $order->getPayment();
  172.         
  173.         if ($payment && $payment->getMethodClass() == $zeus_credit['credit_class_name']) {
  174.             $zeus_credit['payment_method'] = $payment->getMethod();
  175.         
  176.             $event->addSnippet('@ZeusPayment42/credit_confirm.twig');
  177.             $parameters $event->getParameters();
  178.             $formview $parameters['form'];
  179.             $zeus_credit['mask_cark_no'] = $this->paymentService->getMaskedCard($formview['ZeusCreditPaymentCardNo']->vars['value']);
  180.             
  181.             $paras $this->eccubeConfig['zeus_credit_options'];
  182.             $methods $paras['payment_choices'];
  183.             $paymentMethod $formview['ZeusCreditPaymentMethod']->vars['value'];
  184.             $zeus_credit['payment_method_name'] = $methods[$paymentMethod];
  185.             
  186.             $quickOK $this->paymentService->isQuickChargeOK($order$config->getCreditPayment());
  187.             if ($quickOK) {
  188.                 $lastMaskedCard $this->paymentService->fetchMaskedCard($order$config);
  189.                 $zeus_credit['lastMaskedCard'] = $lastMaskedCard;
  190.             } else {
  191.                 $zeus_credit['lastMaskedCard'] = '';
  192.             }
  193.             $zeus_credit['isQuickChargeOK'] = $quickOK;
  194.             $parameters['zeus_credit'] = $zeus_credit;
  195.         }elseif($payment->getMethodClass() == $later['class_name']){
  196.             $later['payment_method'] = $payment->getMethod();
  197.         
  198.             $event->addSnippet('@ZeusPayment42/later_confirm.twig');
  199.             $parameters $event->getParameters();
  200.             $formview $parameters['form'];
  201.             $later['phone_number'] = $formview['later_phone_number']->vars['value'];
  202.             $parameters['later'] = $later;
  203.         }
  204.         
  205.         $event->setParameters($parameters);
  206.     }
  207.     
  208.     
  209.     private function csvRenameButton($event$config){
  210.         
  211.         $parameters $event->getParameters();
  212.         $order $parameters['Order'];
  213.         
  214.         $payment $order->getPayment();
  215.         if (!$payment || $payment->getMethodClass() != \Plugin\ZeusPayment42\Service\Method\CvsPayment::class) {
  216.             return;
  217.         }
  218.         
  219.         $event->addSnippet('@ZeusPayment42/cvs_confirm_rename_button.twig');
  220.     }
  221.     
  222.     private function ebankRenameButton($event$config){
  223.         
  224.         $parameters $event->getParameters();
  225.         $order $parameters['Order'];
  226.         
  227.         $payment $order->getPayment();
  228.         if (!$payment || $payment->getMethodClass() != \Plugin\ZeusPayment42\Service\Method\EbankPayment::class) {
  229.             return;
  230.         }
  231.         
  232.         $event->addSnippet('@ZeusPayment42/ebank_confirm_rename_button.twig');
  233.     }
  234.     
  235.     public function onKernelController(ControllerEvent $event)
  236.     {
  237.         $request $event->getRequest();
  238.         
  239.         ///only front page
  240.         if(strpos($request->getRequestUri(),$this->eccubeConfig['eccube_admin_route'])!==false){
  241.             return;
  242.         }
  243.         
  244.         $preOrderId $this->cartService->getPreOrderId();
  245.         $order $this->orderRepository->findOneBy([
  246.             'pre_order_id' => $preOrderId
  247.             //'OrderStatus' => OrderStatus::PENDING,
  248.         ]);
  249.         if(!$order){
  250.             return;
  251.         }
  252.         $payment $order->getPayment();
  253.         if(!$payment){
  254.             return;
  255.         }
  256.         if($payment->getMethodClass()!=CvsPayment::class && $payment->getMethodClass()!=EbankPayment::class){
  257.             return;
  258.         }
  259.         
  260.         if($order->getOrderStatus()->getId()!=OrderStatus::PENDING && $order->getOrderStatus()->getId()!=OrderStatus::PROCESSING){
  261.             
  262.             $saveOrderErr "注文情報作成失敗しました。";
  263.             $note $order->getNote();
  264.             $saveOrderFailed = ($saveOrderErr === substr($note, - strlen($saveOrderErr)));
  265.             
  266.             log_info('[注文処理] カートをクリアします.', [$order->getId()]);
  267.             $this->cartService->clear();
  268.             
  269.             if($saveOrderFailed){
  270.                 
  271.                 $msg '';
  272.                 if (strlen($order->getNote()) > 0) {
  273.                     $str $order->getNote() . "\r\n";
  274.                 } else {
  275.                     $str "";
  276.                 }
  277.                 
  278.                 $msg "支払手続きは完了している可能性がありますので、サイトまでお問い合わせください。";
  279.                 $order->setNote($str "メッセージ表示中:" $msg);
  280.                 
  281.                 $order->setOrderStatus($this->entityManager->getRepository(OrderStatus::class)->find(OrderStatus::PENDING));
  282.                 
  283.                 $this->entityManager->persist($order);
  284.                 $this->entityManager->flush();
  285.                 $this->entityManager->commit();
  286.                 
  287.                 $this->session->getFlashBag()->add('eccube.front.error''購入処理でエラーが発生しました。' $msg);
  288.                 
  289.                 //$event->setResponse(new RedirectResponse($this->router->generate('shopping_error')));
  290.                 $redirect = new RedirectResponse($this->router->generate('shopping_error'));
  291.                 $redirect->send();
  292.                 
  293.             }
  294.         }
  295.         
  296.     }
  297.     
  298.     public function adminOrderIndexTwig(TemplateEvent $event)
  299.     {
  300.         $event->addSnippet('@ZeusPayment42/admin/order_index_js.twig');
  301.     }
  302.     
  303.     public function adminOrderEditTwig(TemplateEvent $event)
  304.     {
  305.         $parameters $event->getParameters();
  306.         $order $parameters['Order'];
  307.         
  308.         if($order->getId() == null){
  309.             return;
  310.         }
  311.         $payment_id $order->getPayment()->getId();
  312.         $config $this->configRepository->get();
  313.         $payments $config->getPayments();
  314.         foreach ($payments as $payment) {
  315.             $paymentIds[] = $payment->getId();
  316.         }
  317.         $isNonZeusPayment = (!in_array($payment_id$paymentIds) || !$order->getZeusOrderId()) ? true false;
  318.         $event->addSnippet('@ZeusPayment42/admin/order_edit_js.twig');
  319.         $event->setParameter('config'$config);
  320.         $event->setParameter('isNonZeusPayment'$isNonZeusPayment);
  321.         
  322.         $event->setParameter('creditPayment'$config->getCreditPayment());
  323.         $event->setParameter('laterPayment'$config->getLaterPayment());
  324.         $event->setParameter('cvsPayment'$config->getCvsPayment());
  325.         $event->setParameter('ebankPayment'$config->getEbankPayment());
  326.         
  327.         $event->setParameter('zeusCreditSaleTypes'$config->getZeusSaleTypes());
  328.         $event->setParameter('zeusLaterSaleTypes'$config->getZeusLaterSaleTypes());
  329.         $event->setParameter('zeusCvsSaleTypes'$config->getZeusCvsSaleTypes());
  330.         $event->setParameter('zeusEbankSaleTypes'$config->getZeusEbankSaleTypes());
  331.         
  332.     }
  333.     public function onKernelControllerArguments(ControllerArgumentsEvent $event)
  334.     {
  335.         if (!$this->context->isAdmin()) {
  336.             return;
  337.         }
  338.         
  339.         if (!$event->getRequest()->attributes->has('_template')) {
  340.             return;
  341.         }
  342.         /* @var Template $template */
  343.         $template $event->getRequest()->attributes->get('_template');
  344.         
  345.         $this->eventDispatcher->addListener($template->getTemplate(), function (TemplateEvent $templateEvent) {
  346.             $templateEvent->addSnippet('@ZeusPayment42/admin/nav.twig');
  347.         });
  348.     }
  349. }