app/Plugin/ZeusPayment4/ZeusPaymentEvent.php line 216

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