Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GuestPaymentInformationManagementPlugin.php
Go to the documentation of this file.
1 <?php
8 
11 
16 {
22  private $persistenceSessionHelper;
23 
29  private $persistenceDataHelper;
30 
36  private $customerSession;
37 
43  private $checkoutSession;
44 
50  private $quoteManager;
51 
57  private $cartRepository;
58 
69  public function __construct(
70  \Magento\Persistent\Helper\Data $persistenceDataHelper,
71  \Magento\Persistent\Helper\Session $persistenceSessionHelper,
72  \Magento\Customer\Model\Session $customerSession,
73  \Magento\Checkout\Model\Session $checkoutSession,
74  \Magento\Persistent\Model\QuoteManager $quoteManager,
75  \Magento\Quote\Api\CartRepositoryInterface $cartRepository
76  ) {
77  $this->persistenceDataHelper = $persistenceDataHelper;
78  $this->persistenceSessionHelper = $persistenceSessionHelper;
79  $this->customerSession = $customerSession;
80  $this->checkoutSession = $checkoutSession;
81  $this->quoteManager = $quoteManager;
82  $this->cartRepository = $cartRepository;
83  }
84 
96  public function beforeSavePaymentInformationAndPlaceOrder(
98  $cartId,
99  $email,
100  \Magento\Quote\Api\Data\PaymentInterface $paymentMethod,
101  \Magento\Quote\Api\Data\AddressInterface $billingAddress = null
102  ) {
103  if ($this->persistenceSessionHelper->isPersistent()
104  && !$this->customerSession->isLoggedIn()
105  && $this->persistenceDataHelper->isShoppingCartPersist()
106  && $this->quoteManager->isPersistent()
107  ) {
108  $this->customerSession->setCustomerId(null);
109  $this->customerSession->setCustomerGroupId(null);
110  $this->quoteManager->convertCustomerCartToGuest();
112  $quote = $this->cartRepository->get($this->checkoutSession->getQuote()->getId());
113  $quote->setCustomerEmail($email);
114  $quote->getAddressesCollection()->walk('setEmail', ['email' => $email]);
115  $this->cartRepository->save($quote);
116  }
117  }
118 }
$billingAddress
Definition: order.php:25
$cartRepository
Definition: quote.php:18
$email
Definition: details.phtml:13
$quote
$cartId
Definition: quote.php:22
__construct(\Magento\Persistent\Helper\Data $persistenceDataHelper, \Magento\Persistent\Helper\Session $persistenceSessionHelper, \Magento\Customer\Model\Session $customerSession, \Magento\Checkout\Model\Session $checkoutSession, \Magento\Persistent\Model\QuoteManager $quoteManager, \Magento\Quote\Api\CartRepositoryInterface $cartRepository)