app/Plugin/RemisePayment42/Service/UtilService.php line 213

Open in your IDE?
  1. <?php
  2. namespace Plugin\RemisePayment42\Service;
  3. use Symfony\Component\DomCrawler\Crawler;
  4. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  5. use Eccube\Common\EccubeConfig;
  6. use Eccube\Entity\BaseInfo;
  7. use Eccube\Entity\MailTemplate;
  8. use Eccube\Entity\Master\OrderStatus;
  9. use Eccube\Entity\Order;
  10. use Eccube\Entity\Payment;
  11. use Eccube\Repository\BaseInfoRepository;
  12. use Eccube\Repository\MailTemplateRepository;
  13. use Eccube\Repository\Master\OrderStatusRepository;
  14. use Eccube\Repository\OrderRepository;
  15. use Eccube\Repository\PaymentRepository;
  16. use Eccube\Repository\CustomerRepository;
  17. use Eccube\Repository\ShippingRepository;
  18. use Eccube\Repository\DeliveryFeeRepository;
  19. use Eccube\Entity\Customer;
  20. use Eccube\Entity\MailHistory;
  21. use Eccube\Repository\PluginRepository;
  22. use Eccube\Entity\Plugin;
  23. use Eccube\Service\OrderStateMachine;
  24. use Eccube\Service\TaxRuleService;
  25. use Plugin\RemisePayment42\Entity\RemiseMailTemplate;
  26. use Plugin\RemisePayment42\Entity\RemisePayment;
  27. use Plugin\RemisePayment42\Entity\OrderResult;
  28. use Plugin\RemisePayment42\Entity\OrderResultCvs;
  29. use Plugin\RemisePayment42\Repository\ConfigRepository;
  30. use Plugin\RemisePayment42\Repository\RemiseMailTemplateRepository;
  31. use Plugin\RemisePayment42\Repository\RemisePaymentRepository;
  32. use Plugin\RemisePayment42\Repository\OrderResultCvsRepository;
  33. use Plugin\RemisePayment42\Repository\OrderResultCardRepository;
  34. use Plugin\RemisePayment42\Repository\OrderResultRepository;
  35. use Plugin\RemisePayment42\Service\PaymentService;
  36. use Plugin\RemisePayment42\Entity\Config;
  37. use Plugin\RemisePayment42\Entity\ConfigInfo;
  38. use Plugin\RemisePayment42\Entity\ConfigInfoExtset;
  39. use Plugin\RemisePayment42\Repository\PayquickRepository;
  40. use Plugin\RemisePayment42\Entity\Payquick;
  41. /**
  42.  * ユーティリティ
  43.  */
  44. class UtilService
  45. {
  46.     /**
  47.      * @var TokenStorageInterface
  48.      */
  49.     protected $tokenStorage;
  50.     /** @var BaseInfo */
  51.     protected $baseInfo;
  52.     /**
  53.      * @var EccubeConfig
  54.      */
  55.     protected $eccubeConfig;
  56.     /**
  57.      * @var OrderRepository
  58.      */
  59.     protected $orderRepository;
  60.     /**
  61.      * @var OrderStatusRepository
  62.      */
  63.     protected $orderStatusRepository;
  64.     /**
  65.      * @var ShippingRepository
  66.      */
  67.     protected $shippingRepository;
  68.     /**
  69.      * @var DeliveryFeeRepository
  70.      */
  71.     protected $deliveryFeeRepository;
  72.     /**
  73.      * @var TaxRuleService
  74.      */
  75.     protected $taxRuleService;
  76.     /**
  77.      * @var PaymentRepository
  78.      */
  79.     protected $paymentRepository;
  80.     /**
  81.      * @var MailTemplateRepository
  82.      */
  83.     protected $mailTemplateRepository;
  84.     /**
  85.      * @var CustomerRepository
  86.      */
  87.     protected $CustomerRepository;
  88.     /**
  89.      * @var PluginRepository
  90.      */
  91.     protected $pluginRepository;
  92.     /**
  93.      * @var ConfigRepository
  94.      */
  95.     protected $configRepository;
  96.     /**
  97.      * @var RemisePaymentRepository
  98.      */
  99.     protected $remisePaymentRepository;
  100.     /**
  101.      * @var RemiseMailTemplateRepository
  102.      */
  103.     protected $remiseMailTemplateRepository;
  104.     /**
  105.      * @var OrderResultRepository
  106.      */
  107.     protected $orderResultRepository;
  108.     /**
  109.      * @var OrderResultCardRepository
  110.      */
  111.     protected $orderResultCardRepository;
  112.     /**
  113.      * @var OrderResultCvsRepository
  114.      */
  115.     protected $orderResultCvsRepository;
  116.     /**
  117.      * @var PayquickRepository
  118.      */
  119.     protected $PayquickRepository;
  120.     /**
  121.      * @var OrderStateMachine
  122.      */
  123.     protected $orderStateMachine;
  124.     /**
  125.      * コンストラクタ
  126.      *
  127.      * @param TokenStorageInterface $tokenStorage
  128.      * @param BaseInfoRepository $baseInfoRepository
  129.      * @param EccubeConfig $eccubeConfig
  130.      * @param OrderRepository $orderRepository
  131.      * @param OrderStatusRepository $orderStatusRepository
  132.      * @param ShippingRepository $shippingRepository
  133.      * @param DeliveryFeeRepository $deliveryFeeRepository;
  134.      * @param TaxRuleService $taxRuleService
  135.      * @param PaymentRepository $paymentRepository
  136.      * @param MailTemplateRepository $mailTemplateRepository
  137.      * @param CustomerRepository $customerRepository
  138.      * @param PluginRepository $pluginRepository
  139.      * @param ConfigRepository $configRepository
  140.      * @param RemisePaymentRepository $remisePaymentRepository
  141.      * @param RemiseMailTemplateRepository $remiseMailTemplateRepository
  142.      * @param OrderResultRepository $orderResultRepository
  143.      * @param OrderResultCardRepository $orderResultCardRepository
  144.      * @param OrderResultCvsRepository $orderResultCvsRepository
  145.      * @param PayquickRepository $payquickRepository
  146.      * @param OrderStateMachine $orderStateMachine
  147.      */
  148.     public function __construct(
  149.         TokenStorageInterface $tokenStorage,
  150.         BaseInfoRepository $baseInfoRepository,
  151.         EccubeConfig $eccubeConfig,
  152.         OrderRepository $orderRepository,
  153.         OrderStatusRepository $orderStatusRepository,
  154.         ShippingRepository  $shippingRepository,
  155.         DeliveryFeeRepository $deliveryFeeRepository,
  156.         TaxRuleService $taxRuleService,
  157.         PaymentRepository $paymentRepository,
  158.         MailTemplateRepository $mailTemplateRepository,
  159.         CustomerRepository $customerRepository,
  160.         PluginRepository $pluginRepository,
  161.         ConfigRepository $configRepository,
  162.         RemisePaymentRepository $remisePaymentRepository,
  163.         RemiseMailTemplateRepository $remiseMailTemplateRepository,
  164.         OrderResultRepository $orderResultRepository,
  165.         OrderResultCardRepository $orderResultCardRepository,
  166.         OrderResultCvsRepository $orderResultCvsRepository,
  167.         PayquickRepository $payquickRepository,
  168.         OrderStateMachine $orderStateMachine
  169.     ) {
  170.         $this->tokenStorage $tokenStorage;
  171.         $this->baseInfo $baseInfoRepository->get();
  172.         $this->eccubeConfig $eccubeConfig;
  173.         $this->orderRepository $orderRepository;
  174.         $this->orderStatusRepository $orderStatusRepository;
  175.         $this->shippingRepository $shippingRepository;
  176.         $this->deliveryFeeRepository $deliveryFeeRepository;
  177.         $this->taxRuleService $taxRuleService;
  178.         $this->paymentRepository $paymentRepository;
  179.         $this->mailTemplateRepository $mailTemplateRepository;
  180.         $this->customerRepository $customerRepository;
  181.         $this->pluginRepository $pluginRepository;
  182.         $this->configRepository $configRepository;
  183.         $this->remisePaymentRepository $remisePaymentRepository;
  184.         $this->remiseMailTemplateRepository $remiseMailTemplateRepository;
  185.         $this->orderResultRepository $orderResultRepository;
  186.         $this->orderResultCardRepository $orderResultCardRepository;
  187.         $this->orderResultCvsRepository $orderResultCvsRepository;
  188.         $this->payquickRepository $payquickRepository;
  189.         $this->orderStateMachine $orderStateMachine;
  190.     }
  191.     /**
  192.      * 受注情報を取得
  193.      *
  194.      * @param $id
  195.      *
  196.      * @return $Order
  197.      */
  198.     public function getOrder($id)
  199.     {
  200.         $Order $this->orderRepository->find($id);
  201.         return $Order;
  202.     }
  203.     /**
  204.      * 受注情報を取得(OrderIDとCustomerに紐づく)
  205.      *
  206.      * @param $id
  207.      *
  208.      * @return $Order
  209.      */
  210.     public function getOrderByOrderIdCustomer($id,$customer)
  211.     {
  212.         $Order $this->orderRepository->findOneBy(['id'=>$id,'Customer'=>$customer]);
  213.         return $Order;
  214.     }
  215.     /**
  216.      * OrderNoに紐づく受注情報を取得
  217.      *
  218.      * @param $orderNo
  219.      *
  220.      * @return $Order
  221.      */
  222.     public function getOrderByOrderNo($orderNo)
  223.     {
  224.         // 受注情報の取得
  225.         $Order $this->orderRepository->findOneBy([
  226.             'order_no' => $orderNo
  227.         ]);
  228.         return $Order;
  229.     }
  230.     /**
  231.      * 決済処理中の受注情報を取得
  232.      *
  233.      * @param $orderNo
  234.      *
  235.      * @return $Order
  236.      */
  237.     public function getOrderByPending($orderNo)
  238.     {
  239.         // 決済処理中のEC-CUBE受注ステータスを取得
  240.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::PENDING);
  241.         // 受注情報の取得
  242.         $Order $this->orderRepository->findOneBy([
  243.             'order_no' => $orderNo,
  244.             'OrderStatus' => $OrderStatus
  245.         ]);
  246.         return $Order;
  247.     }
  248.     /**
  249.      * 新規受付の受注情報を取得
  250.      *
  251.      * @param $orderNo
  252.      *
  253.      * @return $Order
  254.      */
  255.     public function getOrderByNew($orderNo)
  256.     {
  257.         // 新規受付のEC-CUBE受注ステータスを取得
  258.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::NEW);
  259.         // 受注情報の取得
  260.         $Order $this->orderRepository->findOneBy([
  261.             'order_no' => $orderNo,
  262.             'OrderStatus' => $OrderStatus
  263.         ]);
  264.         return $Order;
  265.     }
  266.     /**
  267.      * 受注情報のステータスを「購入処理中」に変更
  268.      *
  269.      * @param  $Order
  270.      *
  271.      * @return  $Order
  272.      */
  273.     public function setOrderStatusByProcessing($Order)
  274.     {
  275.         // 購入処理中のEC-CUBE受注ステータスを取得
  276.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::PROCESSING);
  277.         // 受注情報のステータスを変更
  278.         $Order->setOrderStatus($OrderStatus);
  279.         return $Order;
  280.     }
  281.     /**
  282.      * 受注情報のステータスを「決済処理中」に変更
  283.      *
  284.      * @param  $Order
  285.      *
  286.      * @return  $Order
  287.      */
  288.     public function setOrderStatusByPending($Order)
  289.     {
  290.         // 決済処理中のEC-CUBE受注ステータスを取得
  291.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::PENDING);
  292.         // 受注情報のステータスを変更
  293.         $Order->setOrderStatus($OrderStatus);
  294.         return $Order;
  295.     }
  296.     /**
  297.      * 受注情報のステータスを「新規受付」に変更
  298.      *
  299.      * @param  $Order
  300.      *
  301.      * @return  $Order
  302.      */
  303.     public function setOrderStatusByNew($Order)
  304.     {
  305.         // 新規受付のEC-CUBE受注ステータスを取得
  306.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::NEW);
  307.         // 受注情報のステータスを変更
  308.         $Order->setOrderStatus($OrderStatus);
  309.         return $Order;
  310.     }
  311.     /**
  312.      * 受注情報のステータスを「入金済み」に変更
  313.      *
  314.      * @param  $Order
  315.      *
  316.      * @return  $Order
  317.      */
  318.     public function setOrderStatusByPaid($Order)
  319.     {
  320.         // 入金済みのEC-CUBE受注ステータスを取得
  321.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::PAID);
  322.         // 受注情報のステータスを変更
  323.         $this->orderStateMachine->apply($Order$OrderStatus);
  324.         return $Order;
  325.     }
  326.     /**
  327.      * 受注情報のステータスを「注文取消し」に変更
  328.      *
  329.      * @param  $Order
  330.      *
  331.      * @return  $Order
  332.      */
  333.     public function setOrderStatusByCancel($Order)
  334.     {
  335.         // 注文取消のEC-CUBE受注ステータスを取得
  336.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::CANCEL);
  337.         // 受注情報のステータスを変更
  338.         $this->orderStateMachine->apply($Order$OrderStatus);
  339.         return $Order;
  340.     }
  341.     /**
  342.      * 受注情報のステータスを「返品」に変更
  343.      *
  344.      * @param  $Order
  345.      *
  346.      * @return  $Order
  347.      */
  348.     public function setOrderStatusByReturned($Order)
  349.     {
  350.         // 返品のEC-CUBE受注ステータスを取得
  351.         $OrderStatus $this->orderStatusRepository->find(OrderStatus::RETURNED);
  352.         // 受注情報のステータスを変更
  353.         $this->orderStateMachine->apply($Order$OrderStatus);
  354.         return $Order;
  355.     }
  356.     /**
  357.      * EC-CUBE支払方法の取得
  358.      *
  359.      * @param  $id
  360.      *
  361.      * @return  $Payment
  362.      */
  363.     public function getPayment($id)
  364.     {
  365.         $Payment $this->paymentRepository->find($id);
  366.         return $Payment;
  367.     }
  368.     /**
  369.      * EC-CUBE支払方法の新規作成
  370.      *
  371.      * @param  string  $method  支払方法名
  372.      *
  373.      * @return  $Payment
  374.      */
  375.     public function createPayment($method)
  376.     {
  377.         $Payment $this->paymentRepository->findOneBy([], ['sort_no' => 'DESC']);
  378.         $sortNo 1;
  379.         if ($Payment) {
  380.             $sortNo $Payment->getSortNo() + 1;
  381.         }
  382.         $Payment = new Payment();
  383.         $Payment->setMethod($method);
  384.         $Payment->setCharge(0);
  385.         $Payment->setSortNo($sortNo);
  386.         $Payment->setFixed(true);
  387.         $Payment->setRuleMin(0);
  388.         $Payment->setMethodClass(PaymentService::class);
  389.         $Payment->setVisible(true);
  390.         $Payment->setCreateDate(new \DateTime());
  391.         $Payment->setUpdateDate(new \DateTime());
  392.         return $Payment;
  393.     }
  394.     /**
  395.      * EC-CUBEメールテンプレートの取得
  396.      *
  397.      * @param  $id
  398.      *
  399.      * @return  $MailTemplate
  400.      */
  401.     public function getMailTemplate($id)
  402.     {
  403.         $MailTemplate $this->mailTemplateRepository->find($id);
  404.         return $MailTemplate;
  405.     }
  406. //     /**
  407. //      * EC-CUBEメールテンプレートの新規作成
  408. //      *
  409. //      * @return  $MailTemplate
  410. //      */
  411. //     public function createMailTemplate($kind)
  412. //     {
  413. //         $MailTemplate = new MailTemplate();
  414. //         switch ($kind){
  415. //             case trans('remise_payment4.common.label.mail_template.kind.acpt'):
  416. //                 // 入金お知らせメール(REMISEマルチ決済)
  417. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.acpt'));
  418. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/order_acpt.twig');
  419. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.acpt'));
  420. //                 $MailTemplate->setCreateDate(new \DateTime());
  421. //                 $MailTemplate->setUpdateDate(new \DateTime());
  422. //                 break;
  423. //             case trans('remise_payment4.common.label.mail_template.kind.ac_order'):
  424. //                 // 定期購買注文受付メールREMISE定期購買)
  425. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.ac_order'));
  426. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/ac_order.twig');
  427. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.ac_order'));
  428. //                 $MailTemplate->setCreateDate(new \DateTime());
  429. //                 $MailTemplate->setUpdateDate(new \DateTime());
  430. //                 break;
  431. //             case trans('remise_payment4.common.label.mail_template.kind.mypage.card_update'):
  432. //                 // 定期購買カード情報更新通知メール(REMISE定期購買)
  433. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.mypage.card_update'));
  434. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/ac_card_update_complete.twig');
  435. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.mypage.card_update'));
  436. //                 $MailTemplate->setCreateDate(new \DateTime());
  437. //                 $MailTemplate->setUpdateDate(new \DateTime());
  438. //                 break;
  439. //             case  trans('remise_payment4.common.label.mail_template.kind.mypage.cancel'):
  440. //                 // 定期購買解約通知メール(REMISE定期購買)
  441. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.mypage.cancel'));
  442. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/ac_cancel_complete.twig');
  443. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.mypage.cancel'));
  444. //                 $MailTemplate->setCreateDate(new \DateTime());
  445. //                 $MailTemplate->setUpdateDate(new \DateTime());
  446. //                 break;
  447. //             case trans('remise_payment4.common.label.mail_template.kind.mypage.skip'):
  448. //                 // 定期購買スキップ通知メール(REMISE定期購買)
  449. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.mypage.skip'));
  450. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/ac_skip_complete.twig');
  451. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.mypage.skip'));
  452. //                 $MailTemplate->setCreateDate(new \DateTime());
  453. //                 $MailTemplate->setUpdateDate(new \DateTime());
  454. //                 break;
  455. //             case trans('remise_payment4.common.label.mail_template.kind.result_import.success'):
  456. //                 // 定期購買結果取込通知メール(REMISE定期購買)
  457. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.result_import.success'));
  458. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/ac_result_import_complete.twig');
  459. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.result_import.success'));
  460. //                 $MailTemplate->setCreateDate(new \DateTime());
  461. //                 $MailTemplate->setUpdateDate(new \DateTime());
  462. //                 break;
  463. //             case trans('remise_payment4.common.label.mail_template.kind.result_import.error'):
  464. //                 // 定期購買結果取込エラー通知メール(REMISE定期購買)
  465. //                 $MailTemplate->setName(trans('remise_payment4.common.label.mail_template.name.result_import.error'));
  466. //                 $MailTemplate->setFileName('RemisePayment42/Resource/template/mail/ac_result_import_error.twig');
  467. //                 $MailTemplate->setMailSubject(trans('remise_payment4.common.label.mail_template.subject.result_import.error'));
  468. //                 $MailTemplate->setCreateDate(new \DateTime());
  469. //                 $MailTemplate->setUpdateDate(new \DateTime());
  470. //                 break;
  471. //         }
  472. //         return $MailTemplate;
  473. //     }
  474.     /**
  475.      * EC-CUBE会員情報の取得
  476.      *
  477.      * @param  $id
  478.      *
  479.      * @return  $Customer
  480.      */
  481.     public function getCustomer($id)
  482.     {
  483.         $Customer $this->customerRepository->find($id);
  484.         return $Customer;
  485.     }
  486.     /**
  487.      * ログイン中のEC-CUBE会員情報の取得
  488.      *
  489.      * @param  $id
  490.      *
  491.      * @return  $Customer
  492.      */
  493.     public function getLoginCustomer()
  494.     {
  495.         $Customer $this->getUser();
  496.         return $Customer;
  497.     }
  498.     protected function getUser()
  499.     {
  500.         if (null === $token $this->tokenStorage->getToken()) {
  501.             return;
  502.         }
  503.         if (!is_object($user $token->getUser())) {
  504.             // e.g. anonymous authentication
  505.             return;
  506.         }
  507.         return $user;
  508.     }
  509.     /**
  510.      * EC-CUBEプラグイン情報の取得
  511.      *
  512.      * @return  $Plugin
  513.      */
  514.     public function getPlugin()
  515.     {
  516.         $Plugin $this->pluginRepository->findByCode(trans('remise_payment4.common.label.plugin_code'));
  517.         return $Plugin;
  518.     }
  519.     /**
  520.      * プラグイン設定情報の取得
  521.      *
  522.      * @return  $Config
  523.      */
  524.     public function getConfig()
  525.     {
  526.         $Config $this->configRepository->findOneByCode(trans('remise_payment4.common.label.plugin_code'));
  527.         return $Config;
  528.     }
  529.     /**
  530.      * プラグイン設定情報の取得
  531.      *
  532.      * @return  $ConfigInfo
  533.      */
  534.     public function getConfigInfo()
  535.     {
  536.         $Config $this->getConfig();
  537.         if (!$Config)
  538.         {
  539.             return null;
  540.         }
  541.         $ConfigInfo $Config->getUnserializeInfo();
  542.         return $ConfigInfo;
  543.     }
  544.     /**
  545.      * プラグイン設定情報の新規作成
  546.      *
  547.      * @return  $Config
  548.      */
  549.     public function createConfig()
  550.     {
  551.         $Config = new Config();
  552.         $Config->setCode(trans('remise_payment4.common.label.plugin_code'));
  553.         $Config->setName(trans('remise_payment4.common.label.plugin_name'));
  554.         $Config->setCreateDate(new \DateTime());
  555.         $Config->setUpdateDate(new \DateTime());
  556.         return $Config;
  557.     }
  558.     /**
  559.      * プラグイン拡張セット設定情報の取得
  560.      *
  561.      * @return  $Config
  562.      */
  563.     public function getConfigExtset()
  564.     {
  565.         $Config $this->configRepository->findOneByCode(trans('remise_payment4.extset.common.label.plugin_code'));
  566.         return $Config;
  567.     }
  568.     /**
  569.      * プラグイン設定情報の取得
  570.      *
  571.      * @return  $ConfigInfo
  572.      */
  573.     public function getConfigInfoExtset()
  574.     {
  575.         $Config $this->getConfigExtset();
  576.         if (!$Config)
  577.         {
  578.             return null;
  579.         }
  580.         $ConfigInfo $Config->getUnserializeInfoExtset();
  581.         return $ConfigInfo;
  582.     }
  583.     /**
  584.      * プラグイン拡張セット設定情報の新規作成
  585.      *
  586.      * @return  $Config
  587.      */
  588.     public function createConfigExtset()
  589.     {
  590.         $Config = new Config();
  591.         $Config->setCode(trans('remise_payment4.extset.common.label.plugin_code'));
  592.         $Config->setName(trans('remise_payment4.extset.common.label.plugin_name'));
  593.         $Config->setCreateDate(new \DateTime());
  594.         $Config->setUpdateDate(new \DateTime());
  595.         return $Config;
  596.     }
  597.     /**
  598.      * ルミーズ支払方法の取得
  599.      *
  600.      * @param  $id
  601.      *
  602.      * @return  $RemisePayment
  603.      */
  604.     public function getRemisePayment($id)
  605.     {
  606.         if($id)
  607.         {
  608.             $RemisePayment $this->remisePaymentRepository->find($id);
  609.         }else{
  610.             return null;
  611.         }
  612.         return $RemisePayment;
  613.     }
  614.     /**
  615.      * ルミーズ支払方法の削除
  616.      *
  617.      * @param  $RemisePayment
  618.      */
  619.     public function deleteRemisePayment($RemisePayment)
  620.     {
  621.         $this->remisePaymentRepository->delete($RemisePayment);
  622.     }
  623.     /**
  624.      * ルミーズ支払方法の取得
  625.      *
  626.      * @param  $kind
  627.      *
  628.      * @return  $RemisePayment
  629.      */
  630.     public function getRemisePaymentByKind($kind)
  631.     {
  632.         $RemisePayment $this->remisePaymentRepository->findByKind($kind);
  633.         return $RemisePayment;
  634.     }
  635.     /**
  636.      * ルミーズメールテンプレートの取得
  637.      *
  638.      * @param  $kind
  639.      *
  640.      * @return  $RemiseMailTemplate
  641.      */
  642.     public function getRemiseMailTemplateByKind($kind)
  643.     {
  644.         $RemiseMailTemplate $this->remiseMailTemplateRepository->findOneByKind($kind);
  645.         return $RemiseMailTemplate;
  646.     }
  647.     /**
  648.      * ルミーズ決済履歴の取得
  649.      *
  650.      * @param  $id
  651.      *
  652.      * @return  $OrderResult
  653.      */
  654.     public function getOrderResult($id)
  655.     {
  656.         $OrderResult $this->orderResultRepository->find($id);
  657.         return $OrderResult;
  658.     }
  659.     /**
  660.      * ルミーズ決済履歴の新規作成
  661.      *
  662.      * @param  $Order
  663.      *
  664.      * @return  $OrderResult
  665.      */
  666.     public function createOrderResult($Order)
  667.     {
  668.         $OrderResult $this->orderResultRepository->findOrCreate($Order);
  669.         return $OrderResult;
  670.     }
  671.     /**
  672.      * ルミーズカード決済履歴詳細の取得
  673.      *
  674.      * @param  $id
  675.      *
  676.      * @return  $OrderResultCard
  677.      */
  678.     public function getOrderResultCard($id)
  679.     {
  680.         $OrderResultCard $this->orderResultCardRepository->find($id);
  681.         return $OrderResultCard;
  682.     }
  683.     /**
  684.      * ルミーズカード決済履歴詳細の取得(受注未確定)
  685.      *
  686.      * @param  $ids
  687.      *
  688.      * @return  $OrderResultCards
  689.      */
  690.     public function getOrderResultCardForNotCompleted($ids)
  691.     {
  692.         $OrderResultCards $this->orderResultCardRepository->getNotCompletedOrder($ids);
  693.         return $OrderResultCards;
  694.     }
  695.     /**
  696.      * ルミーズカード決済履歴詳細の取得(課金失敗)
  697.      *
  698.      * @param  $ids
  699.      *
  700.      * @return  $OrderResultCards
  701.      */
  702.     public function getOrderResultCardForAcFailed($ids)
  703.     {
  704.         $OrderResultCards $this->orderResultCardRepository->getAcFailedOrder($ids);
  705.         return $OrderResultCards;
  706.     }
  707.     /**
  708.      * ルミーズカード決済履歴詳細の取得
  709.      *
  710.      * @param  $ids
  711.      * @param  $states
  712.      *
  713.      * @return  $OrderResultCards
  714.      */
  715.     public function getOrderResultCardsOrderIdsStates($ids,$states=Array())
  716.     {
  717.         $OrderResultCards $this->orderResultCardRepository->getOrderResultCardsOrderIdsStates($ids,$states);
  718.         return $OrderResultCards;
  719.     }
  720.     /**
  721.      * ルミーズカード決済履歴詳細の新規作成
  722.      *
  723.      * @param  $Order
  724.      *
  725.      * @return  $OrderResultCard
  726.      */
  727.     public function createOrderResultCard($Order)
  728.     {
  729.         $OrderResultCard $this->orderResultCardRepository->findOrCreate($Order);
  730.         return $OrderResultCard;
  731.     }
  732.     /**
  733.      * ルミーズカード決済履歴詳細の削除
  734.      *
  735.      * @param  $OrderResultCard
  736.      */
  737.     public function deleteOrderResultCard($OrderResultCard)
  738.     {
  739.         $this->orderResultCardRepository->delete($OrderResultCard);
  740.     }
  741.     /**
  742.      * ルミーズマルチ決済履歴詳細の取得
  743.      *
  744.      * @param  $id
  745.      *
  746.      * @return  $OrderResultCvs
  747.      */
  748.     public function getOrderResultCvs($id)
  749.     {
  750.         $OrderResultCvs $this->orderResultCvsRepository->find($id);
  751.         return $OrderResultCvs;
  752.     }
  753.     /**
  754.      * ルミーズマルチ決済履歴詳細の新規作成
  755.      *
  756.      * @param  $Order
  757.      *
  758.      * @return  $OrderResultCvs
  759.      */
  760.     public function createOrderResultCvs($Order)
  761.     {
  762.         $OrderResultCvs $this->orderResultCvsRepository->findOrCreate($Order);
  763.         return $OrderResultCvs;
  764.     }
  765.     /**
  766.      * ルミーズマルチ決済履歴詳細の削除
  767.      *
  768.      * @param  $OrderResultCvs
  769.      */
  770.     public function deleteOrderResultCvs($OrderResultCvs)
  771.     {
  772.         $this->orderResultCvsRepository->delete($OrderResultCvs);
  773.     }
  774.     /**
  775.      * ペイクイック情報の取得
  776.      *
  777.      * @param  $id
  778.      * @param  $customerId
  779.      *
  780.      * @return  $Payquick
  781.      */
  782.     public function getPayquickById($id$customerId)
  783.     {
  784.         $Payquick $this->payquickRepository->findOneBy(array(
  785.             'id' => $id,
  786.             'customer_id' => $customerId,
  787.         ));
  788.         return $Payquick;
  789.     }
  790.     /**
  791.      * ペイクイック情報の取得
  792.      *
  793.      * @param  $Customer
  794.      *
  795.      * @return  $Payquick
  796.      */
  797.     public function getPayquickByCustomer($Customer)
  798.     {
  799.         $Payquick $this->payquickRepository->findByCustomer($Customer);
  800.         return $Payquick;
  801.     }
  802.     /**
  803.      * ペイクイック情報の新規作成
  804.      *
  805.      * @param  $Customer
  806.      *
  807.      * @return  $Payquick
  808.      */
  809.     public function createPayquick($Customer)
  810.     {
  811.         $Payquick $this->payquickRepository->findOrCreate($Customer);
  812.         return $Payquick;
  813.     }
  814.     /**
  815.      * ペイクイック情報の削除
  816.      *
  817.      * @param  $Payquick
  818.      */
  819.     public function deletePayquick($Payquick)
  820.     {
  821.         $this->payquickRepository->delete($Payquick);
  822.     }
  823.     /**
  824.      * マルチ決済支払情報を取得
  825.      *
  826.      * @param  $Order  決済履歴
  827.      * @param  $OrderResultCvs  マルチ決済履歴詳細
  828.      *
  829.      * @return $cvsInfo
  830.      */
  831.     public function getCvsInfo($Order$OrderResultCvs)
  832.     {
  833.         $cvsInfo '';
  834.         if (!$Order || !$OrderResultCvs)
  835.         {
  836.             return $cvsInfo;
  837.         }
  838.         // EC-CUBE支払方法の取得
  839.         $Payment $Order->getPayment();
  840.         // 支払先
  841.         $key 'remise_payment4.common.label.pay_csv.' $OrderResultCvs->getPayCsv();
  842.         $cvsName trans($key);
  843.         if ($cvsName == $key$cvsName '';
  844.         // 支払期限
  845.         $cvsPaydate '';
  846.         if ($OrderResultCvs->getPayDate() != null)
  847.         {
  848.             $cvsPaydate $OrderResultCvs->getPayDateStr('Y年m月d日');
  849.         }
  850.         // 支払のご案内
  851.         $cvsOthers = array();
  852.         $cvsMsg '';
  853.         switch ($OrderResultCvs->getPayCsv())
  854.         {
  855.             case 'D001'// セブンイレブン
  856.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_no'), $OrderResultCvs->getPayNo1());
  857.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  858.                 $cvsMsg .= trans('remise_payment4.common.label.message_seveneleven');
  859.                 break;
  860.             case "D002"// ローソン
  861.             case "D005"// ミニストップ
  862.                 $cvsOthers[] = array(trans('remise_payment4.common.label.receipt_no'), substr($OrderResultCvs->getPayNo1(), 08));
  863.                 $cvsOthers[] = array(trans('remise_payment4.common.label.confirm_no'), substr($OrderResultCvs->getPayNo1(), 89));
  864.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  865.                 $cvsMsg .= trans('remise_payment4.common.label.message_lawson');
  866.                 break;
  867.             case "D015"// セイコーマート
  868.                 $cvsOthers[] = array(trans('remise_payment4.common.label.receipt_no'), $OrderResultCvs->getPayNo1());
  869.                 $cvsOthers[] = array(trans('remise_payment4.common.label.regist_telno'), $Order->getPhoneNumber());
  870.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  871.                 $cvsMsg .= trans('remise_payment4.common.label.message_seikomart');
  872.                 break;
  873.             case "D405"// ペイジー
  874.                 $cvsOthers[] = array(trans('remise_payment4.common.label.confirm_no'), $OrderResultCvs->getPayNo1());
  875.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  876.                 $cvsMsg .= trans('remise_payment4.common.label.message_payeasy');
  877.                 break;
  878.             case "D003"// サンクス
  879.             case "D004"// サークルK
  880.                 $cvsOthers[] = array(trans('remise_payment4.common.label.receipt_no'), $OrderResultCvs->getPayNo1());
  881.                 $cvsOthers[] = array(trans('remise_payment4.common.label.regist_telno'), $Order->getPhoneNumber());
  882.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  883.                 $cvsMsg .= trans('remise_payment4.common.label.message_circlek');
  884.                 break;
  885.             case "D010"// デイリーヤマザキ
  886.             case "D011"// ヤマザキデイリーストア
  887.                 $cvsOthers[] = array(trans('remise_payment4.common.label.online_no'), $OrderResultCvs->getPayNo1());
  888.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  889.                 $cvsMsg .= trans('remise_payment4.common.label.message_yamazaki');
  890.                 break;
  891.             case "D030"// ファミリーマート
  892.                 $cvsOthers[] = array(trans('remise_payment4.common.label.company_code'), $OrderResultCvs->getPayNo1());
  893.                 $cvsOthers[] = array(trans('remise_payment4.common.label.order_no'), $OrderResultCvs->getPayNo2());
  894.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), trans('remise_payment4.common.label.dsk_url'));
  895.                 $cvsMsg .= trans('remise_payment4.common.label.message_familymart');
  896.                 break;
  897.             case "P901"// コンビニ払込票
  898.             case "P902"// コンビニ払込票(郵便振替対応)
  899.             case "P903"// コンビニ払込票(ハガキ単色)
  900.             case "P904"// コンビニ払込票(ハガキ青)
  901.             case "P905"// コンビニ払込票(ハガキ緑)
  902.             case "P906"// コンビニ払込票(ハガキ赤)
  903.                 $cvsOthers[] = array(trans('remise_payment4.common.label.receipt_no'), $OrderResultCvs->getPayNo1());
  904.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), trans('remise_payment4.common.label.dsk_url'));
  905.                 $cvsMsg .= trans('remise_payment4.common.label.message_paperpay');
  906.                 break;
  907.             default: // 他
  908.                 $cvsOthers[] = array(trans('remise_payment4.common.label.receipt_no'), $OrderResultCvs->getPayNo1());
  909.                 $cvsOthers[] = array(trans('remise_payment4.common.label.payment_url'), $OrderResultCvs->getPayNo2());
  910.                 $cvsMsg .= trans('remise_payment4.common.label.message_other');
  911.                 break;
  912.         }
  913.         $cvsInfo = [
  914.             'title'         => $Payment->getMethod(),
  915.             'cvs_name'      => $cvsName,
  916.             'cvs_paydate'   => $cvsPaydate,
  917.             'cvs_others'    => $cvsOthers,
  918.             'cvs_msg'       => $cvsMsg,
  919.         ];
  920.         return $cvsInfo;
  921.     }
  922.     /**
  923.      * 配列から値の取得
  924.      *
  925.      * @param  $requestData
  926.      * @param  $key
  927.      *
  928.      * @return $value
  929.      */
  930.     public function getValue($requestData$key)
  931.     {
  932.         if (empty($requestData) || $key === "")
  933.         {
  934.             return '';
  935.         }
  936.         if (!isset($requestData[$key]) || $requestData[$key] === "")
  937.         {
  938.             return '';
  939.         }
  940.         return $requestData[$key];
  941.     }
  942.     /**
  943.      * 配列から値(日付)の取得
  944.      *
  945.      * @param  $requestData
  946.      * @param  $key
  947.      *
  948.      * @return $value
  949.      */
  950.     public function getDate($requestData$key)
  951.     {
  952.         if (empty($requestData) || $key === "")
  953.         {
  954.             return null;
  955.         }
  956.         if (!isset($requestData[$key]) || $requestData[$key] === "")
  957.         {
  958.             return null;
  959.         }
  960.         return new \DateTime($requestData[$key]);
  961.     }
  962.     /**
  963.      * 拡張セット用エラーメッセージ取得
  964.      *
  965.      * @param  $job
  966.      * @param  $code
  967.      *
  968.      * @return $dispErrMsg
  969.      */
  970.     public function getExtsetErrorMassage($job,$code)
  971.     {
  972.         // エラーメッセージ取得
  973.         $messageKey 'remise_payment4.front.text.r_code.' $code;
  974.         $errMsg trans($messageKey);
  975.         if ($errMsg == $messageKey)
  976.         {
  977.             $head substr($code03);
  978.             $tail substr($code, -1);
  979.             if ($head == "8:1" || $head == "8:2" || $head == "8:3")
  980.             {
  981.                 if ($tail == "8") {
  982.                     $messageKey 'remise_payment4.front.text.r_code.8:x008';
  983.                 } else {
  984.                     $messageKey 'remise_payment4.front.text.r_code.' $head 'xxx';
  985.                 }
  986.                 $errMsg trans($messageKey);
  987.             }
  988.         }
  989.         if ($errMsg == $messageKey)
  990.         {
  991.             $errMsg trans('remise_payment4.extset.admin_order_edit.text.failed.'.mb_strtolower($job));
  992.         }
  993.         $dispErrMsg trans('remise_payment4.front.text.payment.error') . ":" $errMsg "(" $code ")";
  994.         return $dispErrMsg;
  995.     }
  996.     /**
  997.      * 定期購買用エラーメッセージ取得
  998.      *
  999.      * @param  $job
  1000.      * @param  $code
  1001.      *
  1002.      * @return $dispErrMsg
  1003.      */
  1004.     public function getAcErrorMassage($code)
  1005.     {
  1006.         // エラーメッセージ取得
  1007.         $messageKey 'remise_payment4.front.text.r_code.' $code;
  1008.         $errMsg trans($messageKey);
  1009.         if ($errMsg == $messageKey)
  1010.         {
  1011.             $head substr($code03);
  1012.             $tail substr($code, -1);
  1013.             if ($head == "8:1" || $head == "8:2" || $head == "8:3")
  1014.             {
  1015.                 if ($tail == "8") {
  1016.                     $messageKey 'remise_payment4.front.text.r_code.8:x008';
  1017.                 } else {
  1018.                     $messageKey 'remise_payment4.front.text.r_code.' $head 'xxx';
  1019.                 }
  1020.                 $errMsg trans($messageKey);
  1021.             }
  1022.         }
  1023.         if ($errMsg == $messageKey)
  1024.         {
  1025.             $errMsg trans('remise_payment4.extset.admin_order_edit.text.failed.'.mb_strtolower($job));
  1026.         }
  1027.         $dispErrMsg trans('remise_payment4.front.text.payment.error') . ":" $errMsg "(" $code ")";
  1028.         return $dispErrMsg;
  1029.     }
  1030.     /**
  1031.      * パスワード暗号化
  1032.      *
  1033.      * @param
  1034.      *            $str
  1035.      *
  1036.      * @return $base64EncryptedStr
  1037.      */
  1038.     public function getEncryptedStr($str)
  1039.     {
  1040.         // 暗号化用のメソッドを指定
  1041.         $method 'AES-256-CBC';
  1042.         // 暗号化・復元用のソルト
  1043.         $passphrase 'REMISE_AUTOCHARGE';
  1044.         // iv生成
  1045.         $iv '1234567890123456';
  1046.         // 暗号化
  1047.         $encryptedStr openssl_encrypt($str$method$passphrase0$iv);
  1048.         return $encryptedStr;
  1049.     }
  1050.     /**
  1051.      * パスワード複合化
  1052.      *
  1053.      * @param
  1054.      *            $str
  1055.      *
  1056.      * @return $encryptedStr
  1057.      */
  1058.     public function getDecryptedStr($str)
  1059.     {
  1060.         // 暗号化用のメソッドを指定
  1061.         $method 'AES-256-CBC';
  1062.         // 暗号化したときのソルトを指定。これは漏れたらダメなやつです
  1063.         $passphrase 'REMISE_AUTOCHARGE';
  1064.         // iv生成
  1065.         $iv '1234567890123456';
  1066.         // 複合化
  1067.         $decryptedStr openssl_decrypt($str$method$passphrase0$iv);
  1068.         return $decryptedStr;
  1069.     }
  1070.     /**
  1071.      * 税込金額取得
  1072.      *
  1073.      * @param $price
  1074.      * @param $product
  1075.      * @param $productClass
  1076.      * @param $pref
  1077.      * @param $country
  1078.      *
  1079.      * @return $encryptedStr
  1080.      */
  1081.     public function getTax($price$product null$productClass null$pref null$country null)
  1082.     {
  1083.         // 税込金額を取得
  1084.         $tax $this->taxRuleService->getTax($price$product$productClass$pref$country);
  1085.         return $tax;
  1086.     }
  1087.     /**
  1088.      * 送料取得
  1089.      *
  1090.      * @param
  1091.      *            $str
  1092.      *
  1093.      * @return $encryptedStr
  1094.      */
  1095.     public function getDeliveryFee($quantity,$priceIncTaxTotal,$orderId,$productClass){
  1096.         // 送料を取得
  1097.         $deliveryFee 0;
  1098.         $deliveryFeeIndividual 0;
  1099.         $isDeliveryFee false;
  1100.         if ($this->baseInfo->getDeliveryFreeQuantity()) {
  1101.             // 送料無料条件(数量)
  1102.             if ($this->baseInfo->getDeliveryFreeQuantity() <= $quantity) {
  1103.                 $deliveryFee 0;
  1104.                 $isDeliveryFee true;
  1105.             }
  1106.         }
  1107.         if (! $isDeliveryFee && $this->baseInfo->getDeliveryFreeAmount()) {
  1108.             // 送料無料条件(金額)
  1109.             if ($this->baseInfo->getDeliveryFreeAmount() <= $priceIncTaxTotal) {
  1110.                 $deliveryFee 0;
  1111.                 $isDeliveryFee true;
  1112.             }
  1113.         }
  1114.         if (! $isDeliveryFee) {
  1115.             // 商品ごとの送料設定が有効の場合
  1116.             if ($this->baseInfo->isOptionProductDeliveryFee()) {
  1117.                 if ($productClass->getDeliveryFee() != null) {
  1118.                     $deliveryFeeIndividual $productClass->getDeliveryFee();
  1119.                     // ECCUBEでは商品ごとに設定しても個別の送料+共通の送料が合計送料として請求する仕様となっている。
  1120.                     // $isDeliveryFee = true;
  1121.                 }
  1122.             }
  1123.         }
  1124.         if (! $isDeliveryFee) {
  1125.             // 配送方法の送料を取得
  1126.             $Shipping $this->shippingRepository->findOneBy([
  1127.                 'Order' => $orderId
  1128.             ]);
  1129.             if (! $Shipping) {
  1130.                 return null;
  1131.             }
  1132.             $prefId $Shipping->getPref()->getId();
  1133.             $DeliveryEntity $Shipping->getDelivery();
  1134.             if (! $DeliveryEntity) {
  1135.                 return null;
  1136.             }
  1137.             $DeliveryFeeEntity $this->deliveryFeeRepository->findOneBy([
  1138.                 'Delivery' => $DeliveryEntity->getId(),
  1139.                 'Pref' => $prefId
  1140.             ]);
  1141.             if ($DeliveryFeeEntity) {
  1142.                 $deliveryFee $DeliveryFeeEntity->getFee();
  1143.                 $isDeliveryFee true;
  1144.             }
  1145.         }
  1146.         if (! $isDeliveryFee) {
  1147.             return null;
  1148.         }
  1149.         // 共通の送料+個別の総量
  1150.         $deliveryFee $deliveryFee $deliveryFeeIndividual;
  1151.         return $deliveryFee;
  1152.     }
  1153.     /**
  1154.      * ポイント設定
  1155.      *
  1156.      * @param
  1157.      *
  1158.      * @return
  1159.      */
  1160.     public function setPoint(Order $Order){
  1161.         // ポイント付与が有効化を確認
  1162.         if (!$this->baseInfo->isOptionPoint()) {
  1163.             return;
  1164.         }
  1165.         // 基本設定のポイントレートを取得
  1166.         $basicPointRate $this->baseInfo->getBasicPointRate();
  1167.         // 受注明細を取得
  1168.         $OrderItems $Order->getOrderItems();
  1169.         $totalPoint 0;
  1170.         // 明細ごとのポイントを集計
  1171.         foreach($OrderItems as $OrderItem){
  1172.             $pointRate $OrderItem->getPointRate();
  1173.             if ($pointRate === null) {
  1174.                 $pointRate $basicPointRate;
  1175.             }
  1176.             $point 0;
  1177.             if ($OrderItem->isPoint()) {
  1178.                 $point round($OrderItem->getPrice() * ($pointRate 100)) * $OrderItem->getQuantity();
  1179.                 // Only calc point on product
  1180.             } elseif ($OrderItem->isProduct()) {
  1181.                 // ポイント = 単価 * ポイント付与率 * 数量
  1182.                 $point round($OrderItem->getPrice() * ($pointRate 100)) * $OrderItem->getQuantity();
  1183.             }
  1184.             $totalPoint $totalPoint $point;
  1185.         }
  1186.         $Order->setAddPoint($totalPoint);
  1187.         return;
  1188.     }
  1189. }