Context: How is \Magento\Checkout\Model\Session::replaceQuote()
implemented and used?
981d1f/app/code/Magento/Authorizenet/Controller/Directpost/Payment.php#L118-L150
/**
* Return customer quote
*
* @param bool $cancelOrder
* @param string $errorMsg
* @return void
*/
protected function _returnCustomerQuote($cancelOrder = false, $errorMsg = '')
{
$incrementId = $this->_getDirectPostSession()->getLastOrderIncrementId();
if ($incrementId && $this->_getDirectPostSession()->isCheckoutOrderIncrementIdExist($incrementId)) {
/* @var $order \Magento\Sales\Model\Order */
$order = $this->_objectManager->create('Magento\Sales\Model\Order')->loadByIncrementId($incrementId);
if ($order->getId()) {
try {
/** @var \Magento\Quote\Api\CartRepositoryInterface $quoteRepository */
$quoteRepository = $this->_objectManager->create('Magento\Quote\Api\CartRepositoryInterface');
/** @var \Magento\Quote\Model\Quote $quote */
$quote = $quoteRepository->get($order->getQuoteId());
$quote->setIsActive(1)->setReservedOrderId(null);
$quoteRepository->save($quote);
$this->_getCheckout()->replaceQuote($quote);
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
}
$this->_getDirectPostSession()->removeCheckoutOrderIncrementId($incrementId);
$this->_getDirectPostSession()->unsetData('quote_id');
if ($cancelOrder) {
$order->registerCancellation($errorMsg)->save();
}
}
}
}