diff --git a/Model/TransactionProcessor.php b/Model/TransactionProcessor.php index b698f56..0913db0 100644 --- a/Model/TransactionProcessor.php +++ b/Model/TransactionProcessor.php @@ -227,7 +227,7 @@ private function processReservedTransaction(QuoteInterface $vippsQuote, Transact if ($vippsQuote->getOrderId()) { $order = $this->orderRepository->get($vippsQuote->getOrderId()); } else { - $order = $this->placeOrder($transaction); + $order = $this->placeOrder($vippsQuote, $transaction); } $paymentAction = $this->config->getValue('vipps_payment_action'); @@ -319,14 +319,22 @@ private function acquireLock($reservedOrderId) * @throws WrongAmountException * @throws \Exception */ - private function placeOrder(Transaction $transaction) + private function placeOrder(QuoteInterface $vippsQuote, Transaction $transaction) { - $quote = $this->quoteLocator->get($transaction->getOrderId()); + $quote = $this->cartRepository->get($vippsQuote->getQuoteId()); if (!$quote) { throw new \Exception( //@codingStandardsIgnoreLine - __('Could not place order. Could not find quote with such reserved order id.') + __('Could not place order. Could not find quote.') ); } + + if ($vippsQuote->getReservedOrderId() + && $quote->getReservedOrderId() !== $vippsQuote->getReservedOrderId() + ) { + $quote->setReservedOrderId($vippsQuote->getReservedOrderId()); + $this->cartRepository->save($quote); + } + if (!$quote->getReservedOrderId() || $quote->getReservedOrderId() !== $transaction->getOrderId()) { throw new \Exception( //@codingStandardsIgnoreLine __('Quote reserved order id does not match Vipps transaction order id.') diff --git a/composer.json b/composer.json index 664365b..80e5a52 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "type": "magento2-module", "description": "Vipps Payment Method", "license": "proprietary", - "version": "2.4.8", + "version": "2.4.9", "require": { "magento/framework": "103.0.*", "magento/module-sales": "103.0.*",