<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Braintree\Controller\Adminhtml\Payment; use Magento\Backend\App\Action; use Magento\Backend\App\Action\Context; use Magento\Backend\Model\Session\Quote; use Magento\Braintree\Gateway\Config\Config; use Magento\Braintree\Gateway\Request\PaymentDataBuilder; use Magento\Braintree\Model\Adapter\BraintreeAdapterFactory; use Magento\Framework\Controller\ResultFactory; /** * Retrieves client token. */ class GetClientToken extends Action { const ADMIN_RESOURCE = 'Magento_Braintree::get_client_token'; /** * @var Config */ private $config; /** * @var BraintreeAdapterFactory */ private $adapterFactory; /** * @var Quote */ private $quoteSession; /** * @param Context $context * @param Config $config * @param BraintreeAdapterFactory $adapterFactory * @param Quote $quoteSession */ public function __construct( Context $context, Config $config, BraintreeAdapterFactory $adapterFactory, Quote $quoteSession ) { parent::__construct($context); $this->config = $config; $this->adapterFactory = $adapterFactory; $this->quoteSession = $quoteSession; } /** * @inheritdoc */ public function execute() { $params = []; $response = $this->resultFactory->create(ResultFactory::TYPE_JSON); $storeId = $this->quoteSession->getStoreId(); $merchantAccountId = $this->config->getMerchantAccountId($storeId); if (!empty($merchantAccountId)) { $params[PaymentDataBuilder::MERCHANT_ACCOUNT_ID] = $merchantAccountId; } $clientToken = $this->adapterFactory->create($storeId) ->generate($params); $response->setData(['clientToken' => $clientToken]); return $response; } }