17 private $_paypalConfigFactory;
27 private $_productTypeConfig;
32 private $_paymentData;
41 \
Magento\Paypal\Model\ConfigFactory $paypalConfigFactory,
46 $this->_paypalConfigFactory = $paypalConfigFactory;
48 $this->_productTypeConfig = $productTypeConfig;
49 $this->_paymentData = $paymentData;
61 return $this->isContextAvailable(
$code, $isInCatalog)
62 && $this->isPriceOrSetAvailable($isInCatalog)
63 && $this->isMethodAvailable(
$code);
73 public function isContextAvailable($paymentCode, $isInCatalog)
76 $config = $this->_paypalConfigFactory->create();
77 $config->setMethod($paymentCode);
80 $context = $isInCatalog ?
'visible_on_product' :
'visible_on_cart';
81 if (!
$config->getValue($context)) {
93 public function isPriceOrSetAvailable($isInCatalog)
98 $currentProduct = $this->_registry->registry(
'current_product');
99 if ($currentProduct !==
null) {
100 $productPrice = (double)$currentProduct->getFinalPrice();
102 if (empty($productPrice)
103 && !$this->_productTypeConfig->isProductSet($currentProduct->getTypeId())
119 public function isMethodAvailable($paymentCode)
123 $methodInstance = $this->_paymentData->getMethodInstance($paymentCode);
124 if (!$methodInstance->isAvailable()) {
__construct(\Magento\Paypal\Model\ConfigFactory $paypalConfigFactory, \Magento\Framework\Registry $registry, \Magento\Catalog\Model\ProductTypes\ConfigInterface $productTypeConfig, \Magento\Payment\Helper\Data $paymentData)
validate($code, $isInCatalog)