получите код купона перед размещением заказа
Здравствуйте, я хочу получить код купона в плагине. Мой код:
private $logger;
private $checkoutSession;
public function __construct(
\Psr\Log\LoggerInterface $logger,
\Magento\Checkout\Model\Session $checkoutSession
){
$this->logger = $logger;
$this->checkoutSession = $checkoutSession;
}
public function beforePlaceOrder(\Magento\Quote\Model\QuoteManagement $subject, $cartId, ?\Magento\Quote\Api\Data\PaymentInterface $paymentMethod = null){
$this->logger->debug("Before Place Order");
$order = $this->checkoutSession->getLastRealOrder();
$orderId=$order->getEntityId();
$couponCode = $order->getCouponCode();
$this->logger->debug($couponCode);
}
Но $couponcode пуст.
Кто-нибудь может мне помочь?
Заранее благодарю вас
2
1 answers
Вам не нужно использовать сеанс оформления заказа \Magento\Checkout\Model\Session
.
Из Magento\Quote\Model\QuoteManagement
и Magento\Quote\Api\CartRepositoryInterface
можно получить код купона.
private $logger;
private $quoteRepository;
public function __construct(
\Psr\Log\LoggerInterface $logger,
\Magento\Quote\Api\CartRepositoryInterface $quoteRepository
){
$this->logger = $logger;
$this->quoteRepository = $quoteRepository;
}
public function beforePlaceOrder(
\Magento\Quote\Model\QuoteManagement $subject,
$cartId,
\Magento\Quote\Api\Data\PaymentInterface $paymentMethod = null
){
$this->logger->debug("Before Place Order");
$quote = $this->quoteRepository->getActive($cartId);
if($quote->getId()){
$couponCode = $quote->getCouponCode();
$this->logger->debug($couponCode);
}
}
1
Author: Amit Bera, 2019-06-20 11:21:21