VoidPayment.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  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. class VoidPayment extends \Magento\Sales\Controller\Adminhtml\Order
  8. {
  9. /**
  10. * Attempt to void the order payment
  11. *
  12. * @return \Magento\Backend\Model\View\Result\Redirect
  13. */
  14. public function execute()
  15. {
  16. $order = $this->_initOrder();
  17. $resultRedirect = $this->resultRedirectFactory->create();
  18. if ($order) {
  19. try {
  20. // workaround for backwards compatibility
  21. $order->getPayment()->void(new \Magento\Framework\DataObject());
  22. $order->save();
  23. $this->messageManager->addSuccessMessage(__('The payment has been voided.'));
  24. } catch (\Magento\Framework\Exception\LocalizedException $e) {
  25. $this->messageManager->addErrorMessage($e->getMessage());
  26. } catch (\Exception $e) {
  27. $this->messageManager->addErrorMessage(__('We can\'t void the payment right now.'));
  28. $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
  29. }
  30. $resultRedirect->setPath('sales/*/view', ['order_id' => $order->getId()]);
  31. return $resultRedirect;
  32. }
  33. $resultRedirect->setPath('sales/*/');
  34. return $resultRedirect;
  35. }
  36. }