* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ use Symfony\Contracts\Translation\TranslatorInterface; class CheckoutPaymentStepCore extends AbstractCheckoutStep { protected $template = 'checkout/_partials/steps/payment.tpl'; private $selected_payment_option; /** * @var ConditionsToApproveFinder */ public $conditionsToApproveFinder; /** * @var PaymentOptionsFinder */ public $paymentOptionsFinder; /** * @param Context $context * @param TranslatorInterface $translator * @param PaymentOptionsFinder $paymentOptionsFinder * @param ConditionsToApproveFinder $conditionsToApproveFinder */ 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 = []) { 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; } if (true === is_array($selectedDeliveryOption) && isset($selectedDeliveryOption['product_list'])) { 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'), 'is_recyclable_packaging' => $this->getCheckoutSession()->isRecyclable(), ]; return $this->renderTemplate($this->getTemplate(), $extraParams, $assignedVars); } }