resultRedirectFactory->create(); try { $order = $this->_initOrder(); if ($order) { $action = $this->getRequest()->getParam('action', ''); switch ($action) { case 'accept': $order->getPayment()->accept(); $message = __('The payment has been accepted.'); break; case 'deny': $order->getPayment()->deny(); $message = __('The payment has been denied.'); break; case 'update': $order->getPayment()->update(); if ($order->getPayment()->getIsTransactionApproved()) { $message = __('Transaction has been approved.'); } elseif ($order->getPayment()->getIsTransactionDenied()) { $message = __('Transaction has been voided/declined.'); } else { $message = __('There is no update for the transaction.'); } break; default: throw new \Exception(sprintf('Action "%s" is not supported.', $action)); } $this->orderRepository->save($order); $this->messageManager->addSuccessMessage($message); } else { $resultRedirect->setPath('sales/*/'); return $resultRedirect; } } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addErrorMessage(__('We can\'t update the payment right now.')); $this->logger->critical($e); } $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getEntityId()]); return $resultRedirect; } }