PaymentVaultAttributesLoad.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Vault\Plugin;
  8. use Magento\Sales\Api\Data\OrderPaymentExtensionInterface;
  9. use Magento\Sales\Api\Data\OrderPaymentInterface;
  10. use Magento\Vault\Api\PaymentTokenManagementInterface;
  11. use Magento\Sales\Api\Data\OrderPaymentExtensionFactory;
  12. use Magento\Vault\Api\Data\PaymentTokenInterface;
  13. /**
  14. * Plugin for loading vault payment extension attribute to order/payment entity
  15. */
  16. class PaymentVaultAttributesLoad
  17. {
  18. /**
  19. * @var OrderPaymentExtensionFactory
  20. */
  21. protected $paymentExtensionFactory;
  22. /**
  23. * @var PaymentTokenManagementInterface
  24. */
  25. protected $paymentTokenManagement;
  26. /**
  27. * @param OrderPaymentExtensionFactory $paymentExtensionFactory
  28. * @param PaymentTokenManagement|PaymentTokenManagementInterface $paymentTokenManagement
  29. */
  30. public function __construct(
  31. OrderPaymentExtensionFactory $paymentExtensionFactory,
  32. PaymentTokenManagementInterface $paymentTokenManagement
  33. ) {
  34. $this->paymentExtensionFactory = $paymentExtensionFactory;
  35. $this->paymentTokenManagement = $paymentTokenManagement;
  36. }
  37. /**
  38. * Load vault payment extension attribute to order/payment entity
  39. *
  40. * @param OrderPaymentInterface $payment
  41. * @param OrderPaymentExtensionInterface|null $paymentExtension
  42. * @return OrderPaymentExtensionInterface
  43. */
  44. public function afterGetExtensionAttributes(
  45. OrderPaymentInterface $payment,
  46. OrderPaymentExtensionInterface $paymentExtension = null
  47. ) {
  48. if ($paymentExtension === null) {
  49. $paymentExtension = $this->paymentExtensionFactory->create();
  50. }
  51. $paymentToken = $paymentExtension->getVaultPaymentToken();
  52. if ($paymentToken === null) {
  53. $paymentToken = $this->paymentTokenManagement->getByPaymentId($payment->getEntityId());
  54. if ($paymentToken instanceof PaymentTokenInterface) {
  55. $paymentExtension->setVaultPaymentToken($paymentToken);
  56. }
  57. $payment->setExtensionAttributes($paymentExtension);
  58. }
  59. return $paymentExtension;
  60. }
  61. }