Authorization.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Paypal\Controller\Adminhtml\Express;
  8. use Magento\Framework\App\Response\Http\FileFactory;
  9. use Magento\Framework\Controller\Result\JsonFactory;
  10. use Magento\Framework\Controller\Result\RawFactory;
  11. use Magento\Framework\Controller\Result\Redirect;
  12. use Magento\Framework\Exception\LocalizedException;
  13. use Magento\Framework\Registry;
  14. use Magento\Framework\Translate\InlineInterface;
  15. use Magento\Framework\View\Result\LayoutFactory;
  16. use Magento\Framework\View\Result\PageFactory;
  17. use Magento\Paypal\Model\Adminhtml\Express;
  18. use Magento\Backend\App\Action;
  19. use Magento\Sales\Api\OrderManagementInterface;
  20. use Magento\Sales\Api\OrderRepositoryInterface;
  21. use Magento\Sales\Controller\Adminhtml\Order;
  22. use Psr\Log\LoggerInterface;
  23. /**
  24. * Makes a payment authorization for Paypal Express
  25. * when payment action is order.
  26. *
  27. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  28. */
  29. class Authorization extends Order
  30. {
  31. /**
  32. * Authorization level of a basic admin session.
  33. * @see _isAllowed()
  34. */
  35. const ADMIN_RESOURCE = 'Magento_Paypal::authorization';
  36. /**
  37. * @var Express
  38. */
  39. private $express;
  40. /**
  41. * @param Action\Context $context
  42. * @param Registry $coreRegistry
  43. * @param FileFactory $fileFactory
  44. * @param InlineInterface $translateInline
  45. * @param PageFactory $resultPageFactory
  46. * @param JsonFactory $resultJsonFactory
  47. * @param LayoutFactory $resultLayoutFactory
  48. * @param RawFactory $resultRawFactory
  49. * @param OrderManagementInterface $orderManagement
  50. * @param OrderRepositoryInterface $orderRepository
  51. * @param LoggerInterface $logger
  52. * @param Express $express
  53. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  54. */
  55. public function __construct(
  56. Action\Context $context,
  57. Registry $coreRegistry,
  58. FileFactory $fileFactory,
  59. InlineInterface $translateInline,
  60. PageFactory $resultPageFactory,
  61. JsonFactory $resultJsonFactory,
  62. LayoutFactory $resultLayoutFactory,
  63. RawFactory $resultRawFactory,
  64. OrderManagementInterface $orderManagement,
  65. OrderRepositoryInterface $orderRepository,
  66. LoggerInterface $logger,
  67. Express $express
  68. ) {
  69. $this->express = $express;
  70. parent::__construct(
  71. $context,
  72. $coreRegistry,
  73. $fileFactory,
  74. $translateInline,
  75. $resultPageFactory,
  76. $resultJsonFactory,
  77. $resultLayoutFactory,
  78. $resultRawFactory,
  79. $orderManagement,
  80. $orderRepository,
  81. $logger
  82. );
  83. }
  84. /**
  85. * Authorize full order payment amount.
  86. *
  87. * @return Redirect
  88. */
  89. public function execute(): Redirect
  90. {
  91. $resultRedirect = $this->resultRedirectFactory->create();
  92. $order = $this->_initOrder();
  93. if ($order !== false) {
  94. try {
  95. $this->express->authorizeOrder($order);
  96. $this->orderRepository->save($order);
  97. $this->messageManager->addSuccessMessage(__('Payment authorization has been successfully created.'));
  98. } catch (LocalizedException $e) {
  99. $this->messageManager->addErrorMessage($e->getMessage());
  100. } catch (\Throwable $e) {
  101. $this->messageManager->addErrorMessage(__('Unable to make payment authorization.'));
  102. }
  103. $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getId()]);
  104. } else {
  105. $resultRedirect->setPath('sales/order/index');
  106. }
  107. return $resultRedirect;
  108. }
  109. }