![]() 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-paypal/Observer/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Paypal\Observer; use Magento\Framework\Event\Observer; use Magento\Payment\Observer\AbstractDataAssignObserver; use Magento\Paypal\Model\Payflow\Transparent; use Magento\Quote\Api\Data\PaymentInterface; class PayflowProAddCcData extends AbstractDataAssignObserver { /** * @var array */ private $ccKeys = [ 'cc_type', 'cc_exp_year', 'cc_exp_month', 'cc_last_4' ]; /** * @param Observer $observer * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { $dataObject = $this->readDataArgument($observer); $additionalData = $dataObject->getData(PaymentInterface::KEY_ADDITIONAL_DATA); if (!is_array($additionalData)) { return; } $ccData = array_intersect_key($additionalData, array_flip($this->ccKeys)); if (count($ccData) !== count($this->ccKeys)) { return; } $paymentModel = $this->readPaymentModelArgument($observer); $paymentModel->setAdditionalInformation( Transparent::CC_DETAILS, $this->sortCcData($ccData) ); // CC data should be stored explicitly foreach ($ccData as $ccKey => $ccValue) { $paymentModel->setData($ccKey, $ccValue); } } /** * @param array $ccData * @return array */ private function sortCcData(array $ccData) { $r = []; foreach ($this->ccKeys as $key) { $r[$key] = isset($ccData[$key]) ? $ccData[$key] : null; } return $r; } }