![]() 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/Method/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Payment\Model\Method; use Magento\Framework\App\ObjectManager; use Magento\Framework\DataObject; use Magento\Payment\Model\InfoInterface; use Magento\Payment\Model\MethodInterface; use Magento\Payment\Observer\AbstractDataAssignObserver; use Magento\Quote\Api\Data\PaymentMethodInterface; use Magento\Sales\Model\Order\Payment; use Magento\Directory\Helper\Data as DirectoryHelper; /** * Payment method abstract model * * phpcs:disable Magento2.Classes.AbstractApi * @api * @SuppressWarnings(PHPMD.ExcessivePublicCount) * @SuppressWarnings(PHPMD.TooManyFields) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @deprecated 100.0.6 * @see \Magento\Payment\Model\Method\Adapter * @see https://devdocs.magento.com/guides/v2.4/payments-integrations/payment-gateway/payment-gateway-intro.html * @since 100.0.2 */ abstract class AbstractMethod extends \Magento\Framework\Model\AbstractExtensibleModel implements MethodInterface, PaymentMethodInterface { public const STATUS_UNKNOWN = 'UNKNOWN'; public const STATUS_APPROVED = 'APPROVED'; public const STATUS_ERROR = 'ERROR'; public const STATUS_DECLINED = 'DECLINED'; public const STATUS_VOID = 'VOID'; public const STATUS_SUCCESS = 'SUCCESS'; /** * @var string */ protected $_code; /** * @var string */ protected $_formBlockType = \Magento\Payment\Block\Form::class; /** * @var string */ protected $_infoBlockType = \Magento\Payment\Block\Info::class; /** * @var bool */ protected $_isGateway = false; /** * @var bool */ protected $_isOffline = false; /** * @var bool */ protected $_canOrder = false; /** * @var bool */ protected $_canAuthorize = false; /** * @var bool */ protected $_canCapture = false; /** * @var bool */ protected $_canCapturePartial = false; /** * @var bool */ protected $_canCaptureOnce = false; /** * @var bool */ protected $_canRefund = false; /** * @var bool */ protected $_canRefundInvoicePartial = false; /** * @var bool */ protected $_canVoid = false; /** * @var bool */ protected $_canUseInternal = true; /** * @var bool */ protected $_canUseCheckout = true; /** * @var bool */ protected $_isInitializeNeeded = false; /** * @var bool */ protected $_canFetchTransactionInfo = false; /** * @var bool */ protected $_canReviewPayment = false; /** * TODO: whether a captured transaction may be voided by this gateway * This may happen when amount is captured, but not settled * @var bool */ protected $_canCancelInvoice = false; /** * @var array */ protected $_debugReplacePrivateDataKeys = []; /** * @var \Magento\Payment\Helper\Data */ protected $_paymentData; /** * Core store config * * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected $_scopeConfig; /** * @var Logger */ protected $logger; /** * @var DirectoryHelper */ private $directory; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory * @param \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory * @param \Magento\Payment\Helper\Data $paymentData * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param Logger $logger * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection * @param array $data * @param DirectoryHelper $directory * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory, \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory, \Magento\Payment\Helper\Data $paymentData, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Payment\Model\Method\Logger $logger, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data = [], DirectoryHelper $directory = null ) { parent::__construct( $context, $registry, $extensionFactory, $customAttributeFactory, $resource, $resourceCollection, $data ); $this->_paymentData = $paymentData; $this->_scopeConfig = $scopeConfig; $this->logger = $logger; $this->directory = $directory ?: ObjectManager::getInstance()->get(DirectoryHelper::class); $this->initializeData($data); } /** * Initializes injected data * * @param array $data * @return void */ protected function initializeData($data = []) { if (!empty($data['formBlockType'])) { $this->_formBlockType = $data['formBlockType']; } } /** * @inheritdoc * @deprecated 100.2.0 */ public function setStore($storeId) { $this->setData('store', (int)$storeId); } /** * @inheritdoc * @deprecated 100.2.0 */ public function getStore() { return $this->getData('store'); } /** * Check order availability * * @return bool * @deprecated 100.2.0 */ public function canOrder() { return $this->_canOrder; } /** * Check authorize availability * * @return bool * @deprecated 100.2.0 */ public function canAuthorize() { return $this->_canAuthorize; } /** * Check capture availability * * @return bool * @deprecated 100.2.0 */ public function canCapture() { return $this->_canCapture; } /** * Check partial capture availability * * @return bool * @deprecated 100.2.0 */ public function canCapturePartial() { return $this->_canCapturePartial; } /** * Check whether capture can be performed once and no further capture possible * * @return bool * @deprecated 100.2.0 */ public function canCaptureOnce() { return $this->_canCaptureOnce; } /** * Check refund availability * * @return bool * @deprecated 100.2.0 */ public function canRefund() { return $this->_canRefund; } /** * Check partial refund availability for invoice * * @return bool * @deprecated 100.2.0 */ public function canRefundPartialPerInvoice() { return $this->_canRefundInvoicePartial; } /** * Check void availability. * * @return bool * @internal param \Magento\Framework\DataObject $payment * @deprecated 100.2.0 */ public function canVoid() { return $this->_canVoid; } /** * Using internal pages for input payment data. * * Can be used in admin. * * @return bool * @deprecated 100.2.0 */ public function canUseInternal() { return $this->_canUseInternal; } /** * Can be used in regular checkout * * @return bool * @deprecated 100.2.0 */ public function canUseCheckout() { return $this->_canUseCheckout; } /** * Can be edit order (renew order) * * @return bool * @deprecated 100.2.0 */ public function canEdit() { return true; } /** * Check fetch transaction info availability * * @return bool * @deprecated 100.2.0 */ public function canFetchTransactionInfo() { return $this->_canFetchTransactionInfo; } /** * Fetch transaction info * * @param InfoInterface $payment * @param string $transactionId * @return array * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function fetchTransactionInfo(InfoInterface $payment, $transactionId) { return []; } /** * Retrieve payment system relation flag * * @return bool * @deprecated 100.2.0 */ public function isGateway() { return $this->_isGateway; } /** * Retrieve payment method online/offline flag * * @return bool * @deprecated 100.2.0 */ public function isOffline() { return $this->_isOffline; } /** * Flag if we need to run payment initialize while order place * * @return bool * @deprecated 100.2.0 */ public function isInitializeNeeded() { return $this->_isInitializeNeeded; } /** * To check billing country is allowed for the payment method * * @param string $country * @return bool * @deprecated 100.2.0 */ public function canUseForCountry($country) { /* for specific country, the flag will set up as 1 */ if ($this->getConfigData('allowspecific') == 1) { $availableCountries = explode(',', $this->getConfigData('specificcountry') ?? ''); if (!in_array($country, $availableCountries)) { return false; } } return true; } /** * Check method for processing with base currency * * @param string $currencyCode * @return bool * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function canUseForCurrency($currencyCode) { return true; } /** * Retrieve payment method code * * @return string * @throws \Magento\Framework\Exception\LocalizedException * @deprecated 100.2.0 */ public function getCode() { if (empty($this->_code)) { throw new \Magento\Framework\Exception\LocalizedException( __('We cannot retrieve the payment method code.') ); } return $this->_code; } /** * Retrieve block type for method form generation * * @return string * @deprecated 100.2.0 */ public function getFormBlockType() { return $this->_formBlockType; } /** * Retrieve block type for display method information * * @return string * @deprecated 100.2.0 */ public function getInfoBlockType() { return $this->_infoBlockType; } /** * Retrieve payment information model object * * @return InfoInterface * @throws \Magento\Framework\Exception\LocalizedException * @deprecated 100.2.0 */ public function getInfoInstance() { $instance = $this->getData('info_instance'); if (!$instance instanceof InfoInterface) { throw new \Magento\Framework\Exception\LocalizedException( __('We cannot retrieve the payment information object instance.') ); } return $instance; } /** * Retrieve payment information model object * * @param InfoInterface $info * @return void * @deprecated 100.2.0 */ public function setInfoInstance(InfoInterface $info) { $this->setData('info_instance', $info); } /** * Validate payment method information object * * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @deprecated 100.2.0 */ public function validate() { /** * to validate payment method is allowed for billing country or not */ $paymentInfo = $this->getInfoInstance(); if ($paymentInfo instanceof Payment) { $billingCountry = $paymentInfo->getOrder()->getBillingAddress()->getCountryId(); } else { $billingCountry = $paymentInfo->getQuote()->getBillingAddress()->getCountryId(); } $billingCountry = $billingCountry ?: $this->directory->getDefaultCountry(); if (!$this->canUseForCountry($billingCountry)) { throw new \Magento\Framework\Exception\LocalizedException( __('You can\'t use the payment type you selected to make payments to the billing country.') ); } return $this; } /** * Order payment abstract method * * @param \Magento\Framework\DataObject|InfoInterface $payment * @param float $amount * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function order(\Magento\Payment\Model\InfoInterface $payment, $amount) { if (!$this->canOrder()) { throw new \Magento\Framework\Exception\LocalizedException(__('The order action is not available.')); } return $this; } /** * Authorize payment abstract method * * @param \Magento\Framework\DataObject|InfoInterface $payment * @param float $amount * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function authorize(\Magento\Payment\Model\InfoInterface $payment, $amount) { if (!$this->canAuthorize()) { throw new \Magento\Framework\Exception\LocalizedException(__('The authorize action is not available.')); } return $this; } /** * Capture payment abstract method * * @param \Magento\Framework\DataObject|InfoInterface $payment * @param float $amount * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function capture(\Magento\Payment\Model\InfoInterface $payment, $amount) { if (!$this->canCapture()) { throw new \Magento\Framework\Exception\LocalizedException(__('The capture action is not available.')); } return $this; } /** * Refund specified amount for payment * * @param \Magento\Framework\DataObject|InfoInterface $payment * @param float $amount * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function refund(\Magento\Payment\Model\InfoInterface $payment, $amount) { if (!$this->canRefund()) { throw new \Magento\Framework\Exception\LocalizedException(__('The refund action is not available.')); } return $this; } /** * Cancel payment abstract method * * @param \Magento\Framework\DataObject|InfoInterface $payment * @return $this * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function cancel(\Magento\Payment\Model\InfoInterface $payment) { return $this; } /** * Void payment abstract method * * @param \Magento\Framework\DataObject|InfoInterface $payment * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function void(\Magento\Payment\Model\InfoInterface $payment) { if (!$this->canVoid()) { throw new \Magento\Framework\Exception\LocalizedException(__('The void action is not available.')); } return $this; } /** * Whether this method can accept or deny payment. * * @return bool * @deprecated 100.2.0 */ public function canReviewPayment() { return $this->_canReviewPayment; } /** * Attempt to accept a payment that us under review * * @param InfoInterface $payment * @return false * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function acceptPayment(InfoInterface $payment) { if (!$this->canReviewPayment()) { throw new \Magento\Framework\Exception\LocalizedException(__('The payment review action is unavailable.')); } return false; } /** * Attempt to deny a payment that us under review * * @param InfoInterface $payment * @return false * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function denyPayment(InfoInterface $payment) { if (!$this->canReviewPayment()) { throw new \Magento\Framework\Exception\LocalizedException(__('The payment review action is unavailable.')); } return false; } /** * Retrieve payment method title * * @return string * @deprecated 100.2.0 */ public function getTitle() { return $this->getConfigData('title'); } /** * Retrieve information from payment configuration * * @param string $field * @param int|string|null|\Magento\Store\Model\Store $storeId * * @return mixed * @deprecated 100.2.0 */ public function getConfigData($field, $storeId = null) { if ('order_place_redirect_url' === $field) { return $this->getOrderPlaceRedirectUrl(); } if (null === $storeId) { $storeId = $this->getStore(); } $path = 'payment/' . $this->getCode() . '/' . $field; return $this->_scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); } /** * Assign data to info model instance * * @param array|\Magento\Framework\DataObject $data * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @deprecated 100.2.0 */ public function assignData(\Magento\Framework\DataObject $data) { $this->_eventManager->dispatch( 'payment_method_assign_data_' . $this->getCode(), [ AbstractDataAssignObserver::METHOD_CODE => $this, AbstractDataAssignObserver::MODEL_CODE => $this->getInfoInstance(), AbstractDataAssignObserver::DATA_CODE => $data ] ); $this->_eventManager->dispatch( 'payment_method_assign_data', [ AbstractDataAssignObserver::METHOD_CODE => $this, AbstractDataAssignObserver::MODEL_CODE => $this->getInfoInstance(), AbstractDataAssignObserver::DATA_CODE => $data ] ); return $this; } /** * Check whether payment method can be used * * @param \Magento\Quote\Api\Data\CartInterface|null $quote * @return bool * @deprecated 100.2.0 */ public function isAvailable(\Magento\Quote\Api\Data\CartInterface $quote = null) { if (!$this->isActive($quote ? $quote->getStoreId() : null)) { return false; } $checkResult = new DataObject(); $checkResult->setData('is_available', true); // for future use in observers $this->_eventManager->dispatch( 'payment_method_is_active', [ 'result' => $checkResult, 'method_instance' => $this, 'quote' => $quote ] ); return $checkResult->getData('is_available'); } /** * Is active * * @param int|null $storeId * @return bool * @deprecated 100.2.0 */ public function isActive($storeId = null) { return (bool)(int)$this->getConfigData('active', $storeId); } /** * Method that will be executed instead of authorize or capture if flag isInitializeNeeded set to true. * * @param string $paymentAction * @param object $stateObject * * @return $this * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @deprecated 100.2.0 */ public function initialize($paymentAction, $stateObject) { return $this; } /** * Get config payment action url. * * Used to universalize payment actions when processing payment place. * * @return string * @deprecated 100.2.0 */ public function getConfigPaymentAction() { return $this->getConfigData('payment_action'); } /** * Log debug data to file * * @param array $debugData * @return void * @deprecated 100.2.0 */ protected function _debug($debugData) { $this->logger->debug( $debugData, $this->getDebugReplacePrivateDataKeys(), $this->getDebugFlag() ); } /** * Define if debugging is enabled * * @return bool * @SuppressWarnings(PHPMD.BooleanGetMethodName) * @deprecated 100.2.0 */ public function getDebugFlag() { return (bool)(int)$this->getConfigData('debug'); } /** * Used to call debug method from not Payment Method context * * @param mixed $debugData * @return void * @deprecated 100.2.0 */ public function debugData($debugData) { $this->_debug($debugData); } /** * Return replace keys for debug data * * @return array * @deprecated 100.2.0 */ public function getDebugReplacePrivateDataKeys() { return (array) $this->_debugReplacePrivateDataKeys; } }