![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-instant-purchase/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\InstantPurchase\Model; use Magento\Customer\Model\Customer; use Magento\InstantPurchase\Model\PaymentMethodChoose\PaymentTokenChooserInterface; use Magento\InstantPurchase\Model\ShippingAddressChoose\ShippingAddressChooserInterface; use Magento\InstantPurchase\Model\BillingAddressChoose\BillingAddressChooserInterface; use Magento\InstantPurchase\Model\ShippingMethodChoose\ShippingMethodChooserInterface; use Magento\Store\Model\Store; /** * Choose instant purchase option programmatically based on configured implementation. * * Provide implementations of injected chooser interfaces to customize behavior. */ class InstantPurchaseChooser implements InstantPurchaseInterface { /** * @var InstantPurchaseOptionFactory */ private $instantPurchaseOptionFactory; /** * @var Config */ private $config; /** * @var PaymentTokenChooserInterface */ private $paymentTokenChooser; /** * @var ShippingAddressChooserInterface */ private $shippingAddressChooser; /** * @var BillingAddressChooserInterface */ private $billingAddressChooser; /** * @var ShippingMethodChooserInterface */ private $shippingMethodChooser; /** * InstantPurchase constructor. * @param InstantPurchaseOptionFactory $instantPurchaseOptionFactory * @param Config $config * @param PaymentTokenChooserInterface $paymentTokenChooser * @param ShippingAddressChooserInterface $shippingAddressChooser * @param BillingAddressChooserInterface $billingAddressChooser * @param ShippingMethodChooserInterface $shippingMethodChooser */ public function __construct( InstantPurchaseOptionFactory $instantPurchaseOptionFactory, Config $config, PaymentTokenChooserInterface $paymentTokenChooser, ShippingAddressChooserInterface $shippingAddressChooser, BillingAddressChooserInterface $billingAddressChooser, ShippingMethodChooserInterface $shippingMethodChooser ) { $this->instantPurchaseOptionFactory = $instantPurchaseOptionFactory; $this->config = $config; $this->paymentTokenChooser = $paymentTokenChooser; $this->shippingAddressChooser = $shippingAddressChooser; $this->billingAddressChooser = $billingAddressChooser; $this->shippingMethodChooser = $shippingMethodChooser; } /** * @inheritdoc */ public function getOption( Store $store, Customer $customer ): InstantPurchaseOption { if (!$this->isInstantPurchaseButtonEnabled($store)) { return $this->instantPurchaseOptionFactory->createDisabledOption(); } $paymentToken = $this->paymentTokenChooser->choose($store, $customer); $shippingAddress = $this->shippingAddressChooser->choose($customer); $billingAddress = $this->billingAddressChooser->choose($customer); if ($shippingAddress) { $shippingMethod = $this->shippingMethodChooser->choose($shippingAddress); } else { $shippingMethod = null; } $option = $this->instantPurchaseOptionFactory->create( $paymentToken, $shippingAddress, $billingAddress, $shippingMethod ); return $option; } /** * Checks if button available. * * @param Store $store * @return bool */ private function isInstantPurchaseButtonEnabled(Store $store): bool { return $this->config->isModuleEnabled($store->getId()); } }