| Current Path : /var/www/clients/client3/web2/web/vendor/magento/module-vault/Observer/ |
| Current File : /var/www/clients/client3/web2/web/vendor/magento/module-vault/Observer/PaymentTokenAssigner.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Vault\Observer;
use Magento\Framework\Event\Observer;
use Magento\Payment\Observer\AbstractDataAssignObserver;
use Magento\Quote\Api\Data\PaymentInterface;
use Magento\Quote\Model\Quote\Payment;
use Magento\Vault\Api\Data\PaymentTokenInterface;
use Magento\Vault\Api\PaymentTokenManagementInterface;
use Magento\Vault\Model\Method\Vault;
class PaymentTokenAssigner extends AbstractDataAssignObserver
{
/**
* @var PaymentTokenManagementInterface
*/
private $paymentTokenManagement;
/**
* PaymentTokenAssigner constructor.
* @param PaymentTokenManagementInterface $paymentTokenManagement
*/
public function __construct(
PaymentTokenManagementInterface $paymentTokenManagement
) {
$this->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
]
);
}
}