ReviewPayment.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Controller\Adminhtml\Order;
  7. use Magento\Backend\App\Action;
  8. class ReviewPayment extends \Magento\Sales\Controller\Adminhtml\Order
  9. {
  10. /**
  11. * Authorization level of a basic admin session
  12. *
  13. * @see _isAllowed()
  14. */
  15. const ADMIN_RESOURCE = 'Magento_Sales::review_payment';
  16. /**
  17. * Manage payment state
  18. *
  19. * Either denies or approves a payment that is in "review" state
  20. *
  21. * @return \Magento\Backend\Model\View\Result\Redirect
  22. */
  23. public function execute()
  24. {
  25. $resultRedirect = $this->resultRedirectFactory->create();
  26. try {
  27. $order = $this->_initOrder();
  28. if ($order) {
  29. $action = $this->getRequest()->getParam('action', '');
  30. switch ($action) {
  31. case 'accept':
  32. $order->getPayment()->accept();
  33. $message = __('The payment has been accepted.');
  34. break;
  35. case 'deny':
  36. $order->getPayment()->deny();
  37. $message = __('The payment has been denied.');
  38. break;
  39. case 'update':
  40. $order->getPayment()->update();
  41. if ($order->getPayment()->getIsTransactionApproved()) {
  42. $message = __('Transaction has been approved.');
  43. } elseif ($order->getPayment()->getIsTransactionDenied()) {
  44. $message = __('Transaction has been voided/declined.');
  45. } else {
  46. $message = __('There is no update for the transaction.');
  47. }
  48. break;
  49. default:
  50. throw new \Exception(sprintf('Action "%s" is not supported.', $action));
  51. }
  52. $this->orderRepository->save($order);
  53. $this->messageManager->addSuccessMessage($message);
  54. } else {
  55. $resultRedirect->setPath('sales/*/');
  56. return $resultRedirect;
  57. }
  58. } catch (\Magento\Framework\Exception\LocalizedException $e) {
  59. $this->messageManager->addErrorMessage($e->getMessage());
  60. } catch (\Exception $e) {
  61. $this->messageManager->addErrorMessage(__('We can\'t update the payment right now.'));
  62. $this->logger->critical($e);
  63. }
  64. $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getEntityId()]);
  65. return $resultRedirect;
  66. }
  67. }