paymentTokenManagement = $paymentTokenManagement; } /** * @param Observer $observer * @return void */ public function execute(Observer $observer) { $dataObject = $this->readDataArgument($observer); $additionalData = $dataObject->getData(PaymentInterface::KEY_ADDITIONAL_DATA); if (!is_array($additionalData) || !isset($additionalData[PaymentTokenInterface::PUBLIC_HASH])) { return; } $tokenPublicHash = $additionalData[PaymentTokenInterface::PUBLIC_HASH]; if ($tokenPublicHash === null) { return; } /** @var Payment $paymentModel */ $paymentModel = $this->readPaymentModelArgument($observer); if (!$paymentModel instanceof Payment) { return; } $quote = $paymentModel->getQuote(); $customerId = (int) $quote->getCustomer()->getId(); $paymentToken = $this->paymentTokenManagement->getByPublicHash($tokenPublicHash, $customerId); if ($paymentToken === null) { return; } $paymentModel->setAdditionalInformation( [ PaymentTokenInterface::CUSTOMER_ID => $customerId, PaymentTokenInterface::PUBLIC_HASH => $tokenPublicHash ] ); } }