notifier = $notifier; $this->urlBuilder = $urlBuilder; $this->searchCriteriaBuilderFactory = $searchCriteriaBuilderFactory; $this->invoiceRepository = $invoiceRepository; } protected function getInvoice($transactionId, OrderInterface $order) { $searchCriteriaBuilder = $this->searchCriteriaBuilderFactory->create(); $searchCriteriaBuilder->addFilter( InvoiceInterface::TRANSACTION_ID, $transactionId ); $searchCriteriaBuilder->addFilter( InvoiceInterface::ORDER_ID, $order->getId() ); $searchCriteria = $searchCriteriaBuilder ->setPageSize(1) ->setCurrentPage(1) ->create(); $invoiceList = $this->invoiceRepository->getList($searchCriteria); if (count($items = $invoiceList->getItems())) { $invoice = current($items); $invoice->setOrder($order); return $invoice; } throw new NoSuchEntityException(); } protected function getInvoiceAndSetPaid($transactionId, OrderInterface $order) { $invoice = $this->getInvoice($transactionId, $order); $invoice->pay(); $order->addRelatedObject($invoice); return $invoice; } protected function getInvoiceAndSetCancelled($transactionId, OrderInterface $order) { $invoice = $this->getInvoice($transactionId, $order); $invoice->cancel(); $order->addRelatedObject($invoice); return $invoice; } protected function setOnHold(OrderInterface $order) { $this->setOrderState($order, Order::STATE_HOLDED); } protected function setProcessing(OrderInterface $order) { $this->setOrderState($order, Order::STATE_PROCESSING); } protected function setPaymentReview(OrderInterface $order) { $this->setOrderState($order, Order::STATE_PAYMENT_REVIEW); } protected function setOrderState(OrderInterface $order, $state) { $status = $order->getConfig()->getStateDefaultStatus($state); $order->setState($state)->setStatus($status); } protected function addCaptureDeclinedNotice(OrderInterface $order) { $orderUrl = $this->urlBuilder->getUrl('sales/order/view', ['order_id' => $order->getId()]); $this->notifier->addNotice( __('Capture declined'), __('Capture declined for Order #%1', $order->getIncrementId()), $orderUrl ); } }