/**
  * Load vault payment extension attribute to order/payment entity
  *
  * @param OrderPaymentInterface $payment
  * @param \Closure $proceed
  * @return OrderPaymentExtensionInterface
  */
 public function aroundGetExtensionAttributes(OrderPaymentInterface $payment, \Closure $proceed)
 {
     /** @var OrderPaymentExtensionInterface $paymentExtension */
     $paymentExtension = $proceed();
     if ($paymentExtension === null) {
         $paymentExtension = $this->paymentExtensionFactory->create();
     }
     $paymentToken = $paymentExtension->getVaultPaymentToken();
     if ($paymentToken === null) {
         $paymentToken = $this->paymentTokenManagement->getByPaymentId($payment->getEntityId());
         $paymentExtension->setVaultPaymentToken($paymentToken);
         $payment->setExtensionAttributes($paymentExtension);
     }
     return $paymentExtension;
 }
Example #2
0
 /**
  * @inheritdoc
  */
 public function handle(array $handlingSubject, array $response)
 {
     $isActiveVaultModule = $this->vaultPayment->isActiveForPayment(ConfigProvider::CODE);
     if (!$isActiveVaultModule) {
         return;
     }
     $paymentDO = $this->subjectReader->readPayment($handlingSubject);
     $transaction = $this->subjectReader->readTransaction($response);
     $payment = $paymentDO->getPayment();
     // add vault payment token entity to extension attributes
     $paymentToken = $this->getVaultPaymentToken($transaction, $payment);
     if (null !== $paymentToken) {
         $extensionAttributes = $payment->getExtensionAttributes();
         if (null === $extensionAttributes) {
             $extensionAttributes = $this->paymentExtensionFactory->create();
             $payment->setExtensionAttributes($extensionAttributes);
         }
         $extensionAttributes->setVaultPaymentToken($paymentToken);
     }
 }