Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
TokensConfigProvider.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Vault\Model\Ui;
7 
13 
20 {
24  private static $vaultCode = 'vault';
25 
29  private $storeManager;
30 
34  private $tokenUiComponentProviders;
35 
39  private $customerTokenManagement;
40 
44  private $vaultPaymentList;
45 
53  public function __construct(
54  StoreManagerInterface $storeManager,
55  CustomerTokenManagement $customerTokenManagement,
56  array $tokenUiComponentProviders = []
57  ) {
58  $this->storeManager = $storeManager;
59  $this->tokenUiComponentProviders = $tokenUiComponentProviders;
60  $this->customerTokenManagement = $customerTokenManagement;
61  }
62 
69  public function getConfig()
70  {
71  $vaultPayments = [];
72  $providers = $this->getComponentProviders();
73 
74  if (empty($providers)) {
75  return $vaultPayments;
76  }
77 
78  $tokens = $this->customerTokenManagement->getCustomerSessionTokens();
79 
80  foreach ($tokens as $i => $token) {
81  $paymentCode = $token->getPaymentMethodCode();
82  if (!isset($providers[$paymentCode])) {
83  continue;
84  }
85 
86  $componentProvider = $providers[$paymentCode];
87  $component = $componentProvider->getComponentForToken($token);
88  $config = $component->getConfig();
89  $vaultPaymentCode = !empty($config['code']) ? $config['code'] : $paymentCode;
90  $vaultPayments[$vaultPaymentCode . '_' . $i] = [
91  'config' => $config,
92  'component' => $component->getName()
93  ];
94  }
95 
96  return [
97  'payment' => [
98  self::$vaultCode => $vaultPayments
99  ]
100  ];
101  }
102 
108  private function getComponentProviders()
109  {
110  $providers = [];
111  $storeId = $this->storeManager->getStore()->getId();
112  $vaultPaymentMethods = $this->getVaultPaymentList()->getActiveList($storeId);
113 
114  foreach ($vaultPaymentMethods as $method) {
115  $providerCode = $method->getProviderCode();
116  $componentProvider = $this->getComponentProvider($providerCode);
117  if ($componentProvider === null) {
118  continue;
119  }
120  $providers[$providerCode] = $componentProvider;
121  }
122 
123  return $providers;
124  }
125 
130  private function getComponentProvider($vaultProviderCode)
131  {
132  $componentProvider = isset($this->tokenUiComponentProviders[$vaultProviderCode])
133  ? $this->tokenUiComponentProviders[$vaultProviderCode]
134  : null;
135  return $componentProvider instanceof TokenUiComponentProviderInterface
136  ? $componentProvider
137  : null;
138  }
139 
145  private function getVaultPaymentList()
146  {
147  if ($this->vaultPaymentList === null) {
148  $this->vaultPaymentList = ObjectManager::getInstance()->get(PaymentMethodListInterface::class);
149  }
150  return $this->vaultPaymentList;
151  }
152 }
__construct(StoreManagerInterface $storeManager, CustomerTokenManagement $customerTokenManagement, array $tokenUiComponentProviders=[])
$config
Definition: fraud_order.php:17
$storeManager
$method
Definition: info.phtml:13
$i
Definition: gallery.phtml:31
$tokens
Definition: cards_list.phtml:9