logger = $logger; $this->subjectReader = $subjectReader; $this->coreHelper = $coreHelper; $this->pendingAuthorizationFactory = $pendingAuthorizationFactory; } /** * @param array $handlingSubject * @param array $response * @throws \Exception */ public function handle(array $handlingSubject, array $response) { $paymentDO = $this->subjectReader->readPayment($handlingSubject); $payment = $paymentDO->getPayment(); $order = $this->subjectReader->getOrder(); if ($response['status']) { $payment->setTransactionId($response['authorize_transaction_id']); if ($response['timeout']) { $payment->setIsTransactionPending(true); $order->setState(\Magento\Sales\Model\Order::STATE_PAYMENT_REVIEW)->setStatus(\Magento\Sales\Model\Order::STATE_PAYMENT_REVIEW); $this->pendingAuthorizationFactory->create() ->setAuthorizationId($response['authorize_transaction_id']) ->save(); } $payment->setIsTransactionClosed(false); $quoteLink = $this->subjectReader->getQuoteLink(); $quoteLink->setConfirmed(true)->save(); } } }