![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-quote-graph-ql/Model/Cart/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\QuoteGraphQl\Model\Cart; use Magento\Checkout\Api\Exception\PaymentProcessingRateLimitExceededException; use Magento\Checkout\Api\PaymentProcessingRateLimiterInterface; use Magento\Checkout\Api\PaymentSavingRateLimiterInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException; use Magento\Quote\Api\PaymentMethodManagementInterface; use Magento\Quote\Model\Quote; use Magento\QuoteGraphQl\Model\Cart\Payment\PaymentMethodBuilder; /** * Saves related payment method info for a cart. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class SetPaymentMethodOnCart { /** * @var PaymentMethodManagementInterface */ private $paymentMethodManagement; /** * @var PaymentMethodBuilder */ private $paymentMethodBuilder; /** * @var PaymentSavingRateLimiterInterface */ private $paymentRateLimiter; /** * @param PaymentMethodManagementInterface $paymentMethodManagement * @param PaymentMethodBuilder $paymentMethodBuilder * @param PaymentProcessingRateLimiterInterface|null $paymentRateLimiter * @param PaymentSavingRateLimiterInterface|null $savingRateLimiter * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function __construct( PaymentMethodManagementInterface $paymentMethodManagement, PaymentMethodBuilder $paymentMethodBuilder, ?PaymentProcessingRateLimiterInterface $paymentRateLimiter = null, ?PaymentSavingRateLimiterInterface $savingRateLimiter = null ) { $this->paymentMethodManagement = $paymentMethodManagement; $this->paymentMethodBuilder = $paymentMethodBuilder; $this->paymentRateLimiter = $savingRateLimiter ?? ObjectManager::getInstance()->get(PaymentSavingRateLimiterInterface::class); } /** * Set payment method on cart * * @param Quote $cart * @param array $paymentData * @throws GraphQlInputException * @throws GraphQlNoSuchEntityException */ public function execute(Quote $cart, array $paymentData): void { try { try { $this->paymentRateLimiter->limit(); } catch (PaymentProcessingRateLimitExceededException $ex) { //Limit reached return; } } catch (PaymentProcessingRateLimitExceededException $exception) { throw new GraphQlInputException(__($exception->getMessage()), $exception); } $payment = $this->paymentMethodBuilder->build($paymentData); try { $this->paymentMethodManagement->set($cart->getId(), $payment); } catch (NoSuchEntityException $e) { throw new GraphQlNoSuchEntityException(__($e->getMessage()), $e); } catch (LocalizedException $e) { throw new GraphQlInputException(__($e->getMessage()), $e); } } }