Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PlaceOrder.php
Go to the documentation of this file.
1 <?php
7 
18 use \Throwable;
19 
27 {
31  private $quoteRepository;
32 
36  private $quoteCreation;
37 
41  private $quoteFilling;
42 
46  private $shippingConfiguration;
47 
51  private $paymentConfiguration;
52 
56  private $purchase;
57 
67  public function __construct(
68  CartRepositoryInterface $quoteRepository,
69  QuoteCreation $quoteCreation,
70  QuoteFilling $quoteFilling,
71  ShippingConfiguration $shippingConfiguration,
72  PaymentConfiguration $paymentConfiguration,
73  Purchase $purchase
74  ) {
75  $this->quoteRepository = $quoteRepository;
76  $this->quoteCreation = $quoteCreation;
77  $this->quoteFilling = $quoteFilling;
78  $this->shippingConfiguration = $shippingConfiguration;
79  $this->paymentConfiguration = $paymentConfiguration;
80  $this->purchase = $purchase;
81  }
82 
96  public function placeOrder(
97  Store $store,
99  InstantPurchaseOption $instantPurchaseOption,
101  array $productRequest
102  ) : int {
103  $quote = $this->quoteCreation->createQuote(
104  $store,
105  $customer,
106  $instantPurchaseOption->getShippingAddress(),
107  $instantPurchaseOption->getBillingAddress()
108  );
109  $quote = $this->quoteFilling->fillQuote(
110  $quote,
111  $product,
112  $productRequest
113  );
114 
115  $quote->collectTotals();
116  $this->quoteRepository->save($quote);
117  $quote = $this->quoteRepository->get($quote->getId());
118 
119  try {
120  $quote = $this->shippingConfiguration->configureShippingMethod(
121  $quote,
122  $instantPurchaseOption->getShippingMethod()
123  );
124  $quote = $this->paymentConfiguration->configurePayment(
125  $quote,
126  $instantPurchaseOption->getPaymentToken()
127  );
128  $orderId = $this->purchase->purchase(
129  $quote
130  );
131  return $orderId;
132  } catch (Throwable $e) {
133  $quote->setIsActive(false);
134  $this->quoteRepository->save($quote);
135  throw $e;
136  }
137  }
138 }
$customer
Definition: customers.php:11
$quote
placeOrder(Store $store, Customer $customer, InstantPurchaseOption $instantPurchaseOption, Product $product, array $productRequest)
Definition: PlaceOrder.php:96
__construct(CartRepositoryInterface $quoteRepository, QuoteCreation $quoteCreation, QuoteFilling $quoteFilling, ShippingConfiguration $shippingConfiguration, PaymentConfiguration $paymentConfiguration, Purchase $purchase)
Definition: PlaceOrder.php:67
$quoteRepository