* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ use Symfony\Component\Translation\TranslatorInterface; class CheckoutPaymentStepCore extends AbstractCheckoutStep { protected $template = 'checkout/_partials/steps/payment.tpl'; private $selected_payment_option; public function __construct( Context $context, TranslatorInterface $translator, PaymentOptionsFinder $paymentOptionsFinder, ConditionsToApproveFinder $conditionsToApproveFinder ) { parent::__construct($context, $translator); $this->paymentOptionsFinder = $paymentOptionsFinder; $this->conditionsToApproveFinder = $conditionsToApproveFinder; } public function handleRequest(array $requestParams = []) { $cart = $this->getCheckoutSession()->getCart(); $allProductsInStock = $cart->isAllProductsInStock(); $allProductsExist = $cart->checkAllProductsAreStillAvailableInThisState(); $allProductsHaveMinimalQuantity = $cart->checkAllProductsHaveMinimalQuantities(); if ($allProductsInStock !== true || $allProductsExist !== true || $allProductsHaveMinimalQuantity !== true) { $cartShowUrl = $this->context->link->getPageLink( 'cart', null, $this->context->language->id, [ 'action' => 'show', ], false, null, false ); Tools::redirect($cartShowUrl); } if (isset($requestParams['select_payment_option'])) { $this->selected_payment_option = $requestParams['select_payment_option']; } $this->setTitle( $this->getTranslator()->trans( 'Payment', [], 'Shop.Theme.Checkout' ) ); } /** * @param array $extraParams * * @return string */ public function render(array $extraParams = []) { $isFree = 0 == (float) $this->getCheckoutSession()->getCart()->getOrderTotal(true, Cart::BOTH); $paymentOptions = $this->paymentOptionsFinder->present($isFree); $conditionsToApprove = $this->conditionsToApproveFinder->getConditionsToApproveForTemplate(); $deliveryOptions = $this->getCheckoutSession()->getDeliveryOptions(); $deliveryOptionKey = $this->getCheckoutSession()->getSelectedDeliveryOption(); if (isset($deliveryOptions[$deliveryOptionKey])) { $selectedDeliveryOption = $deliveryOptions[$deliveryOptionKey]; } else { $selectedDeliveryOption = 0; } unset($selectedDeliveryOption['product_list']); $assignedVars = [ 'is_free' => $isFree, 'payment_options' => $paymentOptions, 'conditions_to_approve' => $conditionsToApprove, 'selected_payment_option' => $this->selected_payment_option, 'selected_delivery_option' => $selectedDeliveryOption, 'show_final_summary' => Configuration::get('PS_FINAL_SUMMARY_ENABLED'), ]; return $this->renderTemplate($this->getTemplate(), $extraParams, $assignedVars); } }