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; } }