![]() 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-payment/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Payment\Model; use Magento\Checkout\Model\ConfigProviderInterface; use Magento\Framework\App\RequestInterface; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\UrlInterface; use Magento\Framework\View\Asset\Repository; use Magento\Payment\Helper\Data as PaymentHelper; use Magento\Payment\Model\Method\TransparentInterface; use Psr\Log\LoggerInterface; /** * Class IframeConfigProvider * @package Magento\Payment\Model * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * * Default implementation of config provider for iframe integrations. * Use this class for virtual types declaration. * Extends from this class only in case of urgency. * * @api * @since 100.0.2 */ class IframeConfigProvider implements ConfigProviderInterface { /** * 30 sec */ const TIMEOUT_TIME = 30000; /** * Default length of Cc year field */ const DEFAULT_YEAR_LENGTH = 2; /** * Checkout identifier for transparent iframe payments */ const CHECKOUT_IDENTIFIER = 'checkout_flow'; /** * @var Repository */ protected $assetRepo; /** * @var RequestInterface */ protected $request; /** * @var UrlInterface */ protected $urlBuilder; /** * @var LoggerInterface */ protected $logger; /** * Payment method code * * @var string */ protected $methodCode; /** * @var \Magento\Payment\Model\Method\AbstractMethod */ protected $method; /** * @param Repository $assetRepo * @param RequestInterface $request * @param UrlInterface $urlBuilder * @param LoggerInterface $logger * @param PaymentHelper $paymentHelper * @param string $methodCode */ public function __construct( Repository $assetRepo, RequestInterface $request, UrlInterface $urlBuilder, LoggerInterface $logger, PaymentHelper $paymentHelper, $methodCode ) { $this->assetRepo = $assetRepo; $this->request = $request; $this->urlBuilder = $urlBuilder; $this->logger = $logger; $this->methodCode = $methodCode; $this->method = $paymentHelper->getMethodInstance($methodCode); } /** * {@inheritdoc} */ public function getConfig() { return [ 'payment' => [ 'iframe' => [ 'timeoutTime' => [$this->methodCode => self::TIMEOUT_TIME], 'dateDelim' => [$this->methodCode => $this->getDateDelim()], 'cardFieldsMap' => [$this->methodCode => $this->getCardFieldsMap()], 'source' => [$this->methodCode => $this->getViewFileUrl('blank.html')], 'controllerName' => [$this->methodCode => self::CHECKOUT_IDENTIFIER], 'cgiUrl' => [$this->methodCode => $this->getCgiUrl()], 'placeOrderUrl' => [$this->methodCode => $this->getPlaceOrderUrl()], 'saveOrderUrl' => [$this->methodCode => $this->getSaveOrderUrl()], 'expireYearLength' => [$this->methodCode => $this->getExpireDateYearLength()] ] ] ]; } /** * Get delimiter for date * * @return string */ protected function getDateDelim() { $result = ''; if ($this->method->isAvailable()) { $configData = $this->getMethodConfigData('date_delim'); if ($configData !== null) { $result = $configData; } } return $result; } /** * Returns Cc expire year length * * @return int */ protected function getExpireDateYearLength() { return (int)$this->getMethodConfigData('cc_year_length') ?: self::DEFAULT_YEAR_LENGTH; } /** * Get map of cc_code, cc_num, cc_expdate for gateway * Returns json formatted string * * @return string */ protected function getCardFieldsMap() { $result = []; if ($this->method->isAvailable()) { $configData = $this->getMethodConfigData('ccfields'); $keys = ['cccvv', 'ccexpdate', 'ccnum']; $result = array_combine($keys, explode(',', $configData)); } return $result; } /** * Retrieve url of a view file * * @param string $fileId * @param array $params * @return string[] */ protected function getViewFileUrl($fileId, array $params = []) { try { $params = array_merge(['_secure' => $this->request->isSecure()], $params); return $this->assetRepo->getUrlWithParams($fileId, $params); } catch (LocalizedException $e) { $this->logger->critical($e); return $this->urlBuilder->getUrl('', ['_direct' => 'core/index/notFound']); } } /** * Retrieve place order url on front * * @return string */ protected function getPlaceOrderUrl() { return $this->urlBuilder->getUrl( $this->getMethodConfigData('place_order_url'), [ '_secure' => $this->request->isSecure() ] ); } /** * Retrieve save order url on front * * @return string */ protected function getSaveOrderUrl() { return $this->urlBuilder->getUrl('checkout/onepage/saveOrder', ['_secure' => $this->request->isSecure()]); } /** * Retrieve gateway url * * @return string */ protected function getCgiUrl() { return (bool)$this->getMethodConfigData('sandbox_flag') ? $this->getMethodConfigData('cgi_url_test_mode') : $this->getMethodConfigData('cgi_url'); } /** * Retrieve config data value by field name * * @param string $fieldName * @return mixed */ protected function getMethodConfigData($fieldName) { if ($this->method instanceof TransparentInterface) { return $this->method->getConfigInterface()->getValue($fieldName); } return $this->method->getConfigData($fieldName); } }