123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\Paypal\Controller\Adminhtml\Express;
- use Magento\Framework\App\Response\Http\FileFactory;
- use Magento\Framework\Controller\Result\JsonFactory;
- use Magento\Framework\Controller\Result\RawFactory;
- use Magento\Framework\Controller\Result\Redirect;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Framework\Registry;
- use Magento\Framework\Translate\InlineInterface;
- use Magento\Framework\View\Result\LayoutFactory;
- use Magento\Framework\View\Result\PageFactory;
- use Magento\Paypal\Model\Adminhtml\Express;
- use Magento\Backend\App\Action;
- use Magento\Sales\Api\OrderManagementInterface;
- use Magento\Sales\Api\OrderRepositoryInterface;
- use Magento\Sales\Controller\Adminhtml\Order;
- use Psr\Log\LoggerInterface;
- /**
- * Makes a payment authorization for Paypal Express
- * when payment action is order.
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class Authorization extends Order
- {
- /**
- * Authorization level of a basic admin session.
- * @see _isAllowed()
- */
- const ADMIN_RESOURCE = 'Magento_Paypal::authorization';
- /**
- * @var Express
- */
- private $express;
- /**
- * @param Action\Context $context
- * @param Registry $coreRegistry
- * @param FileFactory $fileFactory
- * @param InlineInterface $translateInline
- * @param PageFactory $resultPageFactory
- * @param JsonFactory $resultJsonFactory
- * @param LayoutFactory $resultLayoutFactory
- * @param RawFactory $resultRawFactory
- * @param OrderManagementInterface $orderManagement
- * @param OrderRepositoryInterface $orderRepository
- * @param LoggerInterface $logger
- * @param Express $express
- * @SuppressWarnings(PHPMD.ExcessiveParameterList)
- */
- public function __construct(
- Action\Context $context,
- Registry $coreRegistry,
- FileFactory $fileFactory,
- InlineInterface $translateInline,
- PageFactory $resultPageFactory,
- JsonFactory $resultJsonFactory,
- LayoutFactory $resultLayoutFactory,
- RawFactory $resultRawFactory,
- OrderManagementInterface $orderManagement,
- OrderRepositoryInterface $orderRepository,
- LoggerInterface $logger,
- Express $express
- ) {
- $this->express = $express;
- parent::__construct(
- $context,
- $coreRegistry,
- $fileFactory,
- $translateInline,
- $resultPageFactory,
- $resultJsonFactory,
- $resultLayoutFactory,
- $resultRawFactory,
- $orderManagement,
- $orderRepository,
- $logger
- );
- }
- /**
- * Authorize full order payment amount.
- *
- * @return Redirect
- */
- public function execute(): Redirect
- {
- $resultRedirect = $this->resultRedirectFactory->create();
- $order = $this->_initOrder();
- if ($order !== false) {
- try {
- $this->express->authorizeOrder($order);
- $this->orderRepository->save($order);
- $this->messageManager->addSuccessMessage(__('Payment authorization has been successfully created.'));
- } catch (LocalizedException $e) {
- $this->messageManager->addErrorMessage($e->getMessage());
- } catch (\Throwable $e) {
- $this->messageManager->addErrorMessage(__('Unable to make payment authorization.'));
- }
- $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getId()]);
- } else {
- $resultRedirect->setPath('sales/order/index');
- }
- return $resultRedirect;
- }
- }
|