resultJsonFactory = $resultJsonFactory; $this->sessionTransparent = $sessionTransparent; $this->secureTokenService = $secureTokenService; $this->sessionManager = $sessionManager; $this->transparent = $transparent; parent::__construct($context); } /** * Send request to PayfloPro gateway for get Secure Token * * @return ResultInterface */ public function execute() { /** @var Quote $quote */ $quote = $this->sessionManager->getQuote(); if (!$quote || !$quote instanceof Quote) { return $this->getErrorResponse(); } $this->sessionTransparent->setQuoteId($quote->getId()); try { $token = $this->secureTokenService->requestToken($quote); if (!$token->getData('securetoken')) { throw new \LogicException(); } return $this->resultJsonFactory->create()->setData( [ $this->transparent->getCode() => ['fields' => $token->getData()], 'success' => true, 'error' => false ] ); } catch (\Exception $e) { return $this->getErrorResponse(); } } /** * Get error response. * * @return Json */ private function getErrorResponse() { return $this->resultJsonFactory->create()->setData( [ 'success' => false, 'error' => true, 'error_messages' => __('Your payment has been declined. Please try again.') ] ); } }