diff --git a/app/code/Magento/QuoteGraphQl/Model/Cart/PlaceOrder.php b/app/code/Magento/QuoteGraphQl/Model/Cart/PlaceOrder.php index b1a7ed3bdc5b6..7a832fdf3aa28 100644 --- a/app/code/Magento/QuoteGraphQl/Model/Cart/PlaceOrder.php +++ b/app/code/Magento/QuoteGraphQl/Model/Cart/PlaceOrder.php @@ -1,7 +1,7 @@ getId(); $paymentMethod = $this->paymentManagement->get($cartId); + // Get a list of available payment methods for the cart + $availablePaymentMethods = $this->paymentManagement->getList($cartId); + $paymentMethodCode = $cart->getPayment()->getMethod(); + $isPaymentMethodAvailable = false; + + // Check if the selected payment method is in the available methods list + if ($paymentMethodCode && $availablePaymentMethods) { + foreach ($availablePaymentMethods as $availableMethod) { + if ($availableMethod->getCode() === $paymentMethodCode) { + $isPaymentMethodAvailable = true; + break; + } + } + } + + if (!$isPaymentMethodAvailable) { + throw new LocalizedException(__('The requested Payment Method is not available.')); + } + return (int)$this->cartManagement->placeOrder($cartId, $paymentMethod); } }