storeManager = $storeManager; $this->tokenUiComponentProviders = $tokenUiComponentProviders; $this->customerTokenManagement = $customerTokenManagement; } /** * Retrieve assoc array of checkout configuration * * @return array * @since 100.1.0 */ public function getConfig() { $vaultPayments = []; $providers = $this->getComponentProviders(); if (empty($providers)) { return $vaultPayments; } $tokens = $this->customerTokenManagement->getCustomerSessionTokens(); foreach ($tokens as $i => $token) { $paymentCode = $token->getPaymentMethodCode(); if (!isset($providers[$paymentCode])) { continue; } $componentProvider = $providers[$paymentCode]; $component = $componentProvider->getComponentForToken($token); $config = $component->getConfig(); $vaultPaymentCode = !empty($config['code']) ? $config['code'] : $paymentCode; $vaultPayments[$vaultPaymentCode . '_' . $i] = [ 'config' => $config, 'component' => $component->getName() ]; } return [ 'payment' => [ self::$vaultCode => $vaultPayments ] ]; } /** * Get list of available vault ui token providers. * * @return TokenUiComponentProviderInterface[] */ private function getComponentProviders() { $providers = []; $storeId = $this->storeManager->getStore()->getId(); $vaultPaymentMethods = $this->getVaultPaymentList()->getActiveList($storeId); foreach ($vaultPaymentMethods as $method) { $providerCode = $method->getProviderCode(); $componentProvider = $this->getComponentProvider($providerCode); if ($componentProvider === null) { continue; } $providers[$providerCode] = $componentProvider; } return $providers; } /** * @param string $vaultProviderCode * @return TokenUiComponentProviderInterface|null */ private function getComponentProvider($vaultProviderCode) { $componentProvider = isset($this->tokenUiComponentProviders[$vaultProviderCode]) ? $this->tokenUiComponentProviders[$vaultProviderCode] : null; return $componentProvider instanceof TokenUiComponentProviderInterface ? $componentProvider : null; } /** * Get instance of vault payment list instance * @return PaymentMethodListInterface * @deprecated 100.2.0 */ private function getVaultPaymentList() { if ($this->vaultPaymentList === null) { $this->vaultPaymentList = ObjectManager::getInstance()->get(PaymentMethodListInterface::class); } return $this->vaultPaymentList; } }