logger = $logger; $this->subjectReader = $subjectReader; $this->coreHelper = $coreHelper; $this->orderRepository = $orderRepository; $this->quoteRepository = $quoteRepository; } /** * @param array $handlingSubject * @param array $response */ public function handle(array $handlingSubject, array $response) { $paymentDO = $this->subjectReader->readPayment($handlingSubject); $payment = $paymentDO->getPayment(); // if reauthorized, treat as end of auth + capture process if ($response['reauthorized']) { if ($response['status']) { $orderDO = $paymentDO->getOrder(); $order = $this->orderRepository->get($orderDO->getId()); $payment->setTransactionId($response['capture_transaction_id']); $payment->setParentTransactionId($response['authorize_transaction_id']); $payment->setIsTransactionClosed(true); $quote = $this->quoteRepository->get($order->getQuoteId()); $quoteLink = $this->subjectReader->getQuoteLink($quote->getId()); $quoteLink->setConfirmed(true)->save(); } } else { // finish capture $payment->setTransactionId($response['transaction_id']); } } }