* @copyright 2007-2018 PrestaShop SA * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ 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 = array()) { $allProductsInStock = $this->getCheckoutSession()->getCart()->isAllProductsInStock(); if ($allProductsInStock !== true) { $cartShowUrl = $this->context->link->getPageLink( 'cart', null, $this->context->language->id, array( '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', array(), 'Shop.Theme.Checkout' ) ); } /** * @param array $extraParams * * @return string */ public function render(array $extraParams = array()) { $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 = array( '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); } }