* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopCheckout\PayPal\OAuth\Query; use Exception; use PrestaShop\Module\PrestashopCheckout\PayPal\OAuth\OAuthService; use PrestaShop\Module\PrestashopCheckout\PayPal\PayPalConfiguration; use PrestaShop\Module\PrestashopCheckout\Repository\PayPalCustomerRepository; class GetPayPalGetUserIdTokenQueryHandler { /** * @var OAuthService */ private $OAuthService; /** * @var PayPalCustomerRepository */ private $customerRepository; /** * @var PayPalConfiguration */ private $payPalConfiguration; /** * @param OAuthService $OAuthService * @param PayPalCustomerRepository $customerRepository */ public function __construct(OAuthService $OAuthService, PayPalCustomerRepository $customerRepository, PayPalConfiguration $payPalConfiguration) { $this->OAuthService = $OAuthService; $this->customerRepository = $customerRepository; $this->payPalConfiguration = $payPalConfiguration; } /** * @param GetPayPalGetUserIdTokenQuery $query * * @return GetPayPalGetUserIdTokenQueryResult * * @throws Exception */ public function handle(GetPayPalGetUserIdTokenQuery $query) { $customerIdPayPal = $query->getCustomerId() ? $this->customerRepository->findPayPalCustomerIdByCustomerId($query->getCustomerId()) : null; $merchantId = $this->payPalConfiguration->getMerchantId(); return new GetPayPalGetUserIdTokenQueryResult($this->OAuthService->getUserIdToken($merchantId, $customerIdPayPal)); } }