123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Braintree\Block;
- use Magento\Backend\Model\Session\Quote;
- use Magento\Braintree\Gateway\Config\Config as GatewayConfig;
- use Magento\Braintree\Model\Adminhtml\Source\CcType;
- use Magento\Braintree\Model\Ui\ConfigProvider;
- use Magento\Framework\View\Element\Template\Context;
- use Magento\Payment\Block\Form\Cc;
- use Magento\Payment\Helper\Data;
- use Magento\Payment\Model\Config;
- use Magento\Vault\Model\VaultPaymentInterface;
- /**
- * Class Form
- */
- class Form extends Cc
- {
- /**
- * @var Quote
- */
- protected $sessionQuote;
- /**
- * @var Config
- */
- protected $gatewayConfig;
- /**
- * @var CcType
- */
- protected $ccType;
- /**
- * @var Data
- */
- private $paymentDataHelper;
- /**
- * @param Context $context
- * @param Config $paymentConfig
- * @param Quote $sessionQuote
- * @param GatewayConfig $gatewayConfig
- * @param CcType $ccType
- * @param Data $paymentDataHelper
- * @param array $data
- */
- public function __construct(
- Context $context,
- Config $paymentConfig,
- Quote $sessionQuote,
- GatewayConfig $gatewayConfig,
- CcType $ccType,
- Data $paymentDataHelper,
- array $data = []
- ) {
- parent::__construct($context, $paymentConfig, $data);
- $this->sessionQuote = $sessionQuote;
- $this->gatewayConfig = $gatewayConfig;
- $this->ccType = $ccType;
- $this->paymentDataHelper = $paymentDataHelper;
- }
- /**
- * Get list of available card types of order billing address country
- * @return array
- */
- public function getCcAvailableTypes()
- {
- $configuredCardTypes = $this->getConfiguredCardTypes();
- $countryId = $this->sessionQuote->getQuote()->getBillingAddress()->getCountryId();
- return $this->filterCardTypesForCountry($configuredCardTypes, $countryId);
- }
- /**
- * Check if cvv validation is available
- * @return boolean
- */
- public function useCvv()
- {
- return $this->gatewayConfig->isCvvEnabled($this->sessionQuote->getStoreId());
- }
- /**
- * Check if vault enabled
- * @return bool
- */
- public function isVaultEnabled()
- {
- $vaultPayment = $this->getVaultPayment();
- return $vaultPayment->isActive($this->sessionQuote->getStoreId());
- }
- /**
- * Get card types available for Braintree
- * @return array
- */
- private function getConfiguredCardTypes()
- {
- $types = $this->ccType->getCcTypeLabelMap();
- $configCardTypes = array_fill_keys(
- $this->gatewayConfig->getAvailableCardTypes($this->sessionQuote->getStoreId()),
- ''
- );
- return array_intersect_key($types, $configCardTypes);
- }
- /**
- * Filter card types for specific country
- * @param array $configCardTypes
- * @param string $countryId
- * @return array
- */
- private function filterCardTypesForCountry(array $configCardTypes, $countryId)
- {
- $filtered = $configCardTypes;
- $countryCardTypes = $this->gatewayConfig->getCountryAvailableCardTypes(
- $countryId,
- $this->sessionQuote->getStoreId()
- );
- // filter card types only if specific card types are set for country
- if (!empty($countryCardTypes)) {
- $availableTypes = array_fill_keys($countryCardTypes, '');
- $filtered = array_intersect_key($filtered, $availableTypes);
- }
- return $filtered;
- }
- /**
- * Get configured vault payment for Braintree
- * @return VaultPaymentInterface
- */
- private function getVaultPayment()
- {
- return $this->paymentDataHelper->getMethodInstance(ConfigProvider::CC_VAULT_CODE);
- }
- }
|