src/Social/FrontendBundle/Controller/PaymentController.php line 37

Open in your IDE?
  1. <?php
  2. namespace Social\FrontendBundle\Controller;
  3. use DateTime;
  4. use Exception;
  5. use Psr\Log\LoggerInterface;
  6. use Social\FrontendBundle\Entity\PaymentCancel;
  7. use Social\FrontendBundle\Entity\VerotelConfirmationPayment;
  8. use Social\InternalBundle\Entity\PackagesList;
  9. use Social\InternalBundle\Entity\UserDeletionQueue;
  10. use Social\UserBundle\Entity\User;
  11. use Social\FrontendBundle\Service\Mailer;
  12. use Social\FrontendBundle\Entity\PaymentOffer;
  13. use Social\InternalBundle\Entity\PackageSelectorTrackerEntity;
  14. use Social\InternalBundle\Service\Core\CustomTelegramIntegration;
  15. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\RedirectResponse;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\HttpFoundation\Session\Session;
  21. use Social\InternalBundle\Service\PaymentMethods\Core\PaymentInterface;
  22. /**
  23.  * Class PaymentController
  24.  *
  25.  * @package Social\FrontendBundle\Controller
  26.  */
  27. class PaymentController extends Controller
  28. {
  29.     /**
  30.      * @param Request $request
  31.      *
  32.      * @return Response
  33.      */
  34.     public function showPostPaymentModalsAction(Request $request)
  35.     {
  36.         $payment $request->get('payment'null);
  37.         $etat    $request->get('etat'null);
  38.         $event   $request->get('event'null);
  39.         return $this->render('SocialFrontendBundle:Payment:show_post_payment_modals.html.twig',
  40.             ['payment' => $payment'etat' => $etat'event' => $event]);
  41.     }
  42.     /**
  43.      * @param Request $request
  44.      *
  45.      * @return JsonResponse
  46.      */
  47.     public function getPaymentUrlAction(Request $request)
  48.     {
  49.         $package $request->get('package');
  50.         $source  $request->get('source');
  51.         // Getting payment methods definitions and get the active one. If not then go on default
  52.         $socialPaymentsDefinitions $this->getParameter('social_payments');
  53.         if (isset($socialPaymentsDefinitions['payment_used_in_front']) && $socialPaymentsDefinitions['payment_used_in_front'] !== '') {
  54.             $loadedPaymentMethod $socialPaymentsDefinitions['payment_used_in_front'];
  55.             if (isset($socialPaymentsDefinitions[$loadedPaymentMethod]) && $socialPaymentsDefinitions[$loadedPaymentMethod]['active'] == true) {
  56.                 if ($this->container->has($socialPaymentsDefinitions[$loadedPaymentMethod]['service'])) {
  57.                     $subscriptionManager $this->get($socialPaymentsDefinitions[$loadedPaymentMethod]['service']);
  58.                 } else {
  59.                     $subscriptionManager $this->get('social.subscription_manager');
  60.                 }
  61.             } else {
  62.                 $subscriptionManager $this->get('social.subscription_manager');
  63.             }
  64.         } else {
  65.             $subscriptionManager $this->get('social.subscription_manager');
  66.         }
  67.         // Initialize the payment
  68.         if (in_array('_init'get_class_methods($subscriptionManager))) {
  69.             $subscriptionManager->_init();
  70.         }
  71.         /** @var PackagesList $packageList */
  72.         $packageList $this->getDoctrine()->getRepository(PackagesList::class)->findOneBy(['name' => $package]);
  73.         $amount $packageList->getValue();
  74.         $this->get('social.mailer')->sendAdminPaymentInitiated($this->getUser(), $amount'modal');
  75.         $redirectUrl $subscriptionManager->getPaymentLink($this->getUser(), $package$source);
  76.         return new JsonResponse(
  77.             [
  78.                 'redirect_url' => $redirectUrl,
  79.             ]
  80.         );
  81.     }
  82.     /**
  83.      * @param Request $request
  84.      * @param Mailer  $mailer
  85.      *
  86.      * @return JsonResponse
  87.      */
  88.     public function cancelSubscriptionAction(Request $request)
  89.     {
  90.         try {
  91.             if ($this->getUser()) {
  92.                 $centralPayService $this->get('social_internal.payments.centralpay_provider_v2');
  93.                 if ($request->isMethod('POST')) {
  94.                    $centralPayService->cancelCentralPaySubscription($this->getUser());
  95.                 }
  96.             }
  97.         } catch (Exception $exception) {
  98. //            $this->get('sentry.client')->captureException($exception);
  99.         }
  100.         return new JsonResponse(['redirect_url' => $this->generateUrl('social_frontend_account_details')]);
  101.     }
  102.     /**
  103.      * @param Request $request
  104.      *
  105.      * @return JsonResponse
  106.      */
  107.     public function refundAction(Request $request)
  108.     {
  109.         $reason $request->get('reason''');
  110.         $mailer $this->get('social.mailer');
  111.         /** @var User|null $user */
  112.         $user $this->getUser();
  113.         $mailer->sendRefundEmail($user$reason);
  114.         return new JsonResponse([]);
  115.     }
  116.     public function verotelPayIndexAction(Request $request)
  117.     {
  118.         $session = new Session();
  119.         $em $this->getDoctrine()->getManager();
  120.         $user $em->getRepository('SocialUserBundle:User')->find($this->getUser());
  121.         if ($user->getPackageName() == 'default') {
  122.             setcookie('tusData'json_encode($request->query->get('tus')), time()+3600);
  123.             $package $request->query->get('package');
  124.         } else {
  125.             $package $session->get('package');
  126.         }
  127.         //for cancel event
  128.         if (!$this->getUser() || $package == null) {
  129.             $verotelConfirmationPayment $em->getRepository('SocialFrontendBundle:VerotelConfirmationPayment')
  130.                 ->findOneBy(['from_user' => $user], ['id' => 'DESC']);
  131.             $user->setPackageNextPaymentDueOn(null);
  132.             $cancelledDate = new \DateTime();
  133.             $verotelConfirmationPayment->setCancelledDate($cancelledDate);
  134.             $em->persist($user);
  135.             $em->persist($verotelConfirmationPayment);
  136.             $em->flush();
  137.             return new RedirectResponse($this->generateUrl('social_user_homepage'));
  138.         }
  139.         try {
  140.             $verotelPayService $this->get('social_internal.payments.verotel_card');
  141.             if ($request->isMethod('POST')) {
  142.                 if ($request->request->get('rmCard') && $request->request->get('rmCard') !== '') {
  143.                     return new JsonResponse($verotelPayService->removeCard($this->getUser(),
  144.                         $request->request->get('rmCard')));
  145.                 }
  146.             }
  147.             $verotelProviderService $this->get('social_internal.payments.verotel_card');
  148.             if ($request->isMethod('GET')) {
  149.                 /** @var UserDeletionQueue $userDeletionQue */
  150.                 $userDeletionQue $em->getRepository(UserDeletionQueue::class)->findOneBy(['for_user' => $this->getUser(), 'isDeleted' => false]);
  151.                 if ($userDeletionQue) {
  152.                     $userDeletionQue->setIsDeleted(true);
  153.                 }
  154.                 $purchaseUrl $verotelProviderService->getPaymentLink($this->getUser(), $packagenull);
  155.                 if ($user->getPackageName() == 'default' || $request->isXmlHttpRequest()) {
  156.                     return new JsonResponse(['redirect_url' => $purchaseUrl]);
  157.                 } else {
  158.                     return new RedirectResponse($purchaseUrl);
  159.                 }
  160.             }
  161.             return new RedirectResponse($this->generateUrl('social_user_homepage'));
  162.         }
  163.         catch (\Symfony\Component\Security\Acl\Exception\Exception $exception) {
  164.             $this->get('sentry.client')->captureException($exception);
  165.             return new JsonResponse([
  166.                 'view'   => null,
  167.                 'errors' => ['Something wrong happended'],
  168.             ]);
  169.         }
  170.     }
  171.     public function verotelPaymentPostBackCallAction(Request $requestLoggerInterface $cardBillingLogger)
  172.     {
  173.         $cardBillingLogger->info('req-post'$request->request->all());
  174.         $cardBillingLogger->info('req-get'$request->query->all());
  175.         if (!$request->get('event')) {
  176.             $this->redirectToRoute('social_frontend_homepage_account');
  177.         }
  178.         $verotelCardService $this->get('social_internal.payments.verotel_card');
  179.         $verotelCardService->_init();
  180.         $postbackResult '';
  181.         switch (strtolower($request->get('event'))) {
  182.             case 'rebill':
  183.                 $postbackResult $verotelCardService->rebillTransaction($request);
  184.                 break;
  185.             case 'extend':
  186.                 $postbackResult $verotelCardService->extendRebillTransaction($request);
  187.                 break;
  188.             case 'initial':
  189.                 $postbackResult =  $verotelCardService->checkInitialTransaction($request);
  190.                 break;
  191.             case 'cancel':
  192.                 $postbackResult =  $verotelCardService->cancelTransaction($request);
  193.                 break;
  194.             case 'expiry':
  195.                 $postbackResult =  $verotelCardService->expiryTransaction($request);
  196.                 break;
  197.             case 'upgrade':
  198.                 $postbackResult =  $verotelCardService->upgradeTransaction($request);
  199.                 break;
  200.             case 'downgrade':
  201.                 $postbackResult =  $verotelCardService->downgradeTransaction($request);
  202.                 break;
  203.             case 'credit':
  204.                 $postbackResult =  $verotelCardService->creditTransaction($request);
  205.                 break;
  206.             case 'chargeback':
  207.                 $postbackResult =  $verotelCardService->chargeBackTransaction($request);
  208.                 break;
  209.         }
  210.         return new Response($postbackResult,200);
  211.     }
  212.     public function centralPayCheckAction(Request $request)
  213.     {
  214.         try {
  215.             if ($this->getUser() && $request->isXmlHttpRequest()) {
  216.                 $data $request->request->all();
  217.                 $this->get('social_internal.bots.telegram')
  218.                      ->sendMessage("Iframe message"$data['data'], 'GOD'CustomTelegramIntegration::CHANNEL_SALES);
  219.             }
  220.             return new JsonResponse("OK");
  221.         } catch (\Exception $exception) {
  222.             return new JsonResponse("NOK");
  223.         }
  224.     }
  225.     public function centralPayIndexAction(Request $requestLoggerInterface $debuglogLogger)
  226.     {
  227.         $em $this->get('doctrine.orm.entity_manager');
  228.         $user $em->getRepository('SocialUserBundle:User')->find($this->getUser());
  229.         try {
  230.             if ($this->getUser()) {
  231.                 /** @var UserDeletionQueue $userDeletionQue */
  232.                 $userDeletionQue $em->getRepository(UserDeletionQueue::class)->findOneBy(['for_user' => $this->getUser(), 'isDeleted' => false]);
  233.                 if ($userDeletionQue) {
  234.                     $userDeletionQue->setIsDeleted(true);
  235.                 }
  236.                 /* ////////////////////// V2 */
  237.                 $centralPayService $this->get('social_internal.payments.centralpay_provider_v2');
  238.                 $centralPayProcess $centralPayService->startProcess($request);
  239.                 $debuglogLogger->info('started process in centralPayIndexAction for user ' $user->getId());
  240.                 $debuglogLogger->info('request method is ' $request->getMethod());
  241.                 if ($request->isMethod('POST')) {
  242.                     if ($request->request->get('rmCard') && $request->request->get('rmCard') !== '') {
  243.                         return new JsonResponse($centralPayService->removeCard($this->getUser(),
  244.                             $request->request->get('rmCard')));
  245.                     }
  246.                     $content json_decode($centralPayProcess->getContent());
  247.                     $debuglogLogger->info('$centralPayProcess response is - ' $centralPayProcess->getContent());
  248.                     if ($content->error_flag === false && $content->sStep === 'upgraded') {
  249.                         $debuglogLogger->info('in centralPayIndexAction error_flag is false');
  250.                         /** @var VerotelConfirmationPayment $userVerotelPayment */
  251.                         $userVerotelPayment $em->getRepository('SocialFrontendBundle:VerotelConfirmationPayment')
  252.                             ->findOneBy(['from_user' => $user], ['id' => 'DESC']);
  253.                         $debuglogLogger->info('in centralPayIndexAction $userVerotelPayment for user ' $user->getId());
  254.                         if ($userVerotelPayment) {
  255.                             $debuglogLogger->info('$userVerotelPayment found from `payment_verotel_installments` table with ID ' $userVerotelPayment->getId());
  256.                             $isPaymentCancelled $em->getRepository(PaymentCancel::class)->findOneBy(['uniqueTransactionId' => $userVerotelPayment->getTransactionID()]);
  257.                             if (!$isPaymentCancelled) {
  258.                                 $verotelPayService $this->get('social_internal.payments.verotel_card');
  259.                                 $verotelPayService->cancelSubscription($userVerotelPayment->getSaleID());
  260.                             } else {
  261.                                 $debuglogLogger->info('Previous Sale is already cancelled in cardbilling ' $userVerotelPayment->getId());
  262.                             }
  263.                         }
  264.                     }
  265.                     $debuglogLogger->info('in centralPayIndexAction in POST method');
  266.                 }
  267.                 $debuglogLogger->info('$centralPayProcess response = ' json_encode($centralPayProcess));
  268.                 return $centralPayProcess;
  269.                 /* ////////////////////// V2 */
  270.                 // Init the main service for central Pay
  271.                 $paymentProviderService $this->get('social_internal.payments.centralpay_provider_v2');
  272.                 // If request is a get then it means that we need to display form or get in the 3DS check
  273.                 if ($request->isMethod('GET')) {
  274.                     $package $request->query->get('package');
  275.                     if ($package) {
  276.                         $packageDetails $paymentProviderService->getFormDisplayData($package);
  277.                         if (false === $packageDetails['error_flag']) {
  278.                             $packageDetails $packageDetails['data'];
  279.                         } else {
  280.                             return $packageDetails;
  281.                         }
  282.                         //$savedCards       = $this->getDoctrine()->getRepository('SocialInternalBundle:CentralPayEntity')
  283.                         //                         ->getAllUserCards($this->getUser());
  284.                         $registeredCustomerEntity $this->getDoctrine()->getRepository('SocialInternalBundle:CentralPayCustomersEntity')
  285.                                                          ->findOneBy(['userReference' => $this->getUser()]);
  286.                         $registeredCards          null;
  287.                         if ($registeredCustomerEntity) {
  288.                             $registeredCards $registeredCustomerEntity->getSavedCards();
  289.                         }
  290.                         $centralPayParams $this->getParameter('social_payments');
  291.                         return new JsonResponse([
  292.                             'error_flag' => false,
  293.                             'errors'     => null,
  294.                             'view'       => $this->renderView('@SocialFrontend/Payment/Partials/cp_payment_form.html.twig',
  295.                                 [
  296.                                     'savedCards'     => $registeredCards,
  297.                                     'packageDetails' => $packageDetails,
  298.                                     'errors'         => null,
  299.                                     'merchantKey'    => $centralPayParams['centralPay']['merchantPublicKey'],
  300.                                 ]),
  301.                         ]);
  302.                     }
  303.                 } elseif ($request->isMethod('POST')) {
  304.                     if ($request->request->get('rmCard') && $request->request->get('rmCard') !== '') {
  305.                         return new JsonResponse($paymentProviderService->removeCard($this->getUser(),
  306.                             $request->request->get('rmCard')));
  307.                     }
  308.                     $response $paymentProviderService->startProcess($request);
  309.                     $tus      $request->request->get('tus');
  310.                     if (true === $response['error_flag']) {
  311.                         if (isset($response['sStep']) && 'pFail' === $response['sStep']) {
  312.                             $response['view'] = $this->renderView('@SocialFrontend/Payment/Partials/cp_payment_finished.html.twig',
  313.                                 ['data' => $response'errors' => null]);
  314.                             $newTrack         = new PackageSelectorTrackerEntity();
  315.                             $newTrack->setUser($this->getUser()->getId());
  316.                             $newTrack->setLogDate(new DateTime('now'));
  317.                             $newTrack->setTrackedData($tus ',failed');
  318.                             $this->getDoctrine()->getManager()->persist($newTrack);
  319.                             $this->getDoctrine()->getManager()->flush();
  320.                             unset($response['data']);
  321.                             return new JsonResponse($response);
  322.                         }
  323.                         // To be sure no sensitive data is going out
  324.                         unset($response['data']);
  325.                         return new JsonResponse($response);
  326.                     }
  327.                     if (isset($response['sStep']) && 'checkDS' === $response['sStep']) {
  328.                         $response['view'] = $this->renderView('@SocialFrontend/Payment/Partials/enrollement_form.html.twig',
  329.                             [
  330.                                 'enrollmentData' => $response['data'],
  331.                                 'errors'         => null,
  332.                                 'internalData'   => [
  333.                                     'userID'        => $this->getUser()->getId(),
  334.                                     'package'       => $package,
  335.                                     'mTI'           => '',
  336.                                     'installmentID' => '',
  337.                                     'paReq'         => '',
  338.                                     'paRes'         => '',
  339.                                 ],
  340.                             ]);
  341.                         return new JsonResponse($response);
  342.                     }
  343.                     if (isset($response['sStep']) && 'upgraded' === $response['sStep']) {
  344.                         $response['view'] = $this->renderView('@SocialFrontend/Payment/Partials/cp_payment_finished.html.twig',
  345.                             ['data' => $response'errors' => null]);
  346.                         $newTrack         = new PackageSelectorTrackerEntity();
  347.                         $newTrack->setUser($this->getUser()->getId());
  348.                         $newTrack->setLogDate(new DateTime('now'));
  349.                         $newTrack->setTrackedData($tus ',upgraded');
  350.                         $this->getDoctrine()->getManager()->persist($newTrack);
  351.                         $this->getDoctrine()->getManager()->flush();
  352.                         return new JsonResponse($response);
  353.                     }
  354.                 }
  355.             }
  356.             // No user is logged in - redirect it to register/login
  357.             return new RedirectResponse($this->generateUrl('social_user_homepage'));
  358.         } catch (Exception $exception) {
  359.             $this->get('sentry.client')->captureException($exception);
  360.             $debuglogLogger->critical('Error occurred in centralPayIndex - ' $exception->getMessage());
  361.             return new JsonResponse([
  362.                 'view'   => null,
  363.                 'errors' => ['Something wrong happened'],
  364.             ]);
  365.         }
  366.     }
  367.     public function centralPayChallengeAction(Request $requestLoggerInterface $debuglogLogger)
  368.     {
  369.         try {
  370.             $centralPayService $this->get('social_internal.payments.centralpay_provider_v2');
  371.             $retour json_decode(base64_decode($_POST['cres']), true);
  372.             $debuglogLogger->info('In centralPayChallengeAction');
  373.             $threeDSTransaction =  $centralPayService->threeDS2Transaction($retour);
  374.             if ($request->isMethod('POST')) {
  375.                 if ($request->request->get('rmCard') && $request->request->get('rmCard') !== '') {
  376.                     return new JsonResponse($centralPayService->removeCard($this->getUser(),
  377.                         $request->request->get('rmCard')));
  378.                 }
  379.                 $response json_decode($threeDSTransaction->getContent());
  380.                 return new Response($response->view);
  381.             }
  382.             return new RedirectResponse($this->generateUrl('social_user_homepage'));
  383.         } catch (Exception $exception) {
  384.             $this->get('sentry.client')->captureException($exception);
  385.         }
  386.     }
  387.     public function centralPaySmartFormAction(Request $requestLoggerInterface $debuglogLogger)
  388.     {
  389.         try {
  390.             setcookie('tusData'json_encode($request->request->get('tus')), time()+3600);
  391.             $debuglogLogger->info('Step 1 - Smart form has initiated - centralPaySmartFormAction() and Requested data for smart form ' json_encode($request->request->all()));
  392.             if ($this->getUser()) {
  393.                 $centralPayService $this->get('social_internal.payments.centralpay_provider_v2');
  394.                 /** @var UserDeletionQueue $userDeletionQue */
  395.                 $userDeletionQue $this->getDoctrine()->getRepository(UserDeletionQueue::class)->findOneBy(['for_user' => $this->getUser(), 'isDeleted' => false]);
  396.                 if ($userDeletionQue) {
  397.                     $userDeletionQue->setIsDeleted(true);
  398.                 }
  399.                 $debuglogLogger->info("Calling smartFormProcess()");
  400.                 $centralPayProcess $centralPayService->smartFormProcess($request);
  401.                 if (isset($centralPayProcess) && $centralPayProcess['error_flag'] == false) {
  402.                     $debuglogLogger->info('Step 3 - No error - Smart form rendered');
  403.                 } else {
  404.                     $debuglogLogger->info('Step 3 - Error - Something went wrong while getting the form rendering');
  405.                 }
  406.                 if (isset($centralPayProcess) && isset($centralPayProcess['url_sf']) && $centralPayProcess['url_sf']) {
  407.                     $debuglogLogger->info('Step 4 - (Before payment)Smart form redirection url is returned from sf response - '$centralPayProcess['url_sf']);
  408.                 } else {
  409.                     $debuglogLogger->info('Step 4 - Something went wrong while getting url');
  410.                 }
  411.                 return new JsonResponse([
  412.                     'error_flag' => false,
  413.                     'data' => $centralPayProcess['url_sf'] ?? []
  414.                 ]);
  415.             }
  416.             return new JsonResponse([
  417.                 'error_flag' => true,
  418.                 'message' => 'Something went wrong'
  419.             ]);
  420.         } catch (Exception $exception) {
  421.             $debuglogLogger->info('Step LAST - Exception thrown while smart form: '$exception->getMessage());
  422.             return new JsonResponse([
  423.                 'error_flag' => true,
  424.                 'message' => $exception->getMessage()
  425.             ]);
  426.         }
  427.     }
  428.     public function centralPayRedirectAction(Request $request)
  429.     {
  430.         try {
  431.             return $this->render('@SocialFrontend/Payment/Partials/cp_after_redirect.html.twig',
  432.                 [
  433.                     'md'    => $request->get('MD',$this->getParameter('project_name')),
  434.                     'paRes' => $request->get('PaRes'),
  435.                 ]);
  436.         } catch (Exception $exception) {
  437.             /** @var LoggerInterface $centralPayLogger */
  438.             $centralPayLogger->error($exception->getMessage());
  439.             $centralPayLogger->error(json_encode($request->request->all()));
  440.             // This is really bad - but will not get pass payment transaction in the next step since the paRes is failing
  441.             return $this->render('@SocialFrontend/Payment/Partials/cp_after_redirect.html.twig',
  442.                 [
  443.                     'md'    => '',
  444.                     'paRes' => '',
  445.                 ]);
  446.         }
  447.     }
  448.     /**
  449.      * @param Request         $request
  450.      * @param LoggerInterface $centralPayLogger
  451.      *
  452.      * @return JsonResponse
  453.      */
  454.     public function centralPayHooksAction(
  455.         Request $request,
  456.         LoggerInterface $centralPayLogger,
  457.         LoggerInterface $centralPaySFLogger,
  458.         LoggerInterface $cardBillingLogger
  459.     ): JsonResponse {
  460.         try {
  461.             $deflatedParams json_decode($request->getContent(), true);
  462.             if (isset($deflatedParams['type'])) {
  463.                 $centralPayService $this->get('social_internal.payments.centralpay_provider_v2');
  464.                 $centralPayLogger->info(">>>>>>>>>>>>>> Incoming hook:: \n>>>>>>> TYPE:::: {$deflatedParams['type']}\n" json_encode($deflatedParams,
  465.                         true) . "\n<<<<<<<<<<<<<<");
  466.                 $response $centralPayService->processHookRequest($deflatedParams);
  467.                 $centralPayLogger->critical('>>>>>>>>>>>>>> END HOOK UTILITY ACTION WITH :: ');
  468.                 $centralPayLogger->critical('>>>>>>> TYPE:::: ' $deflatedParams['type']);
  469.                 $centralPayLogger->critical(json_encode($responsetrue));
  470.                 $centralPayLogger->critical('<<<<<<<<<<<<<<');
  471.                 $centralPaySFLogger->info(">>>>>>>>>>>>>> Incoming hook:: \n>>>>>>> TYPE:::: {$deflatedParams['type']}\n" json_encode($deflatedParams,
  472.                         true) . "\n<<<<<<<<<<<<<<");
  473.                 $centralPaySFLogger->critical('>>>>>>>>>>>>>> END HOOK UTILITY ACTION WITH :: ');
  474.                 $centralPaySFLogger->critical('>>>>>>> TYPE:::: ' $deflatedParams['type']);
  475.                 $centralPaySFLogger->critical(json_encode($responsetrue));
  476.                 $centralPaySFLogger->critical('<<<<<<<<<<<<<<');
  477.                 return new JsonResponse($response200);
  478.             }
  479.             $this->get('sentry.client')->captureMessage('Payment hook type index in array not found!');
  480.             return new JsonResponse(['error_flag' => true'message' => 'Type is not found in cp request hook']);
  481.         } catch (Exception $e) {
  482.             $this->get('sentry.client')->captureMessage($e->getMessage(), ['exception' => $e]);
  483.             return new JsonResponse(['error_flag' => true'message' => $e->getMessage()]);
  484.         }
  485.     }
  486. }