public function hookPayment($params)
 {
     global $smarty, $cookie;
     if (!$this->active) {
         return;
     }
     // Verify if customer has memorized tokens
     // $cart = $this->context->cart; // v1.5
     $cart = new Cart((int) $cookie->id_cart);
     $tokens = HipayToken::getTokens($cart->id_customer);
     // Retrieve list of tokens
     if (isset($tokens['0'])) {
         $token_display = 'true';
     } else {
         $token_display = 'false';
     }
     // Verify if systems should display memorized tokens
     $allow_memorize = HipayClass::getShowMemorization();
     // If both are true, activate additional info to allow payment via existing token
     if ($allow_memorize == 'true') {
         $currency_array = $this->getCurrency((int) $cart->id_currency);
         $currency = $currency_array[0]['iso_code'];
         foreach ($currency_array as $key => $value) {
             if ($value['id_currency'] == $cart->id_currency) {
                 $actual_currency = $value['iso_code'];
             }
         }
         if ($currency != $actual_currency) {
             $currency = $actual_currency;
         }
         $smarty->assign(array('cart_id' => $cart->id, 'currency' => $currency, 'amount' => $cart->getOrderTotal(true, Cart::BOTH)));
     }
     // Create dynamic payment button
     $card_str = Configuration::get('HIPAY_ALLOWED_CARDS');
     $cart_arr = explode(',', $card_str);
     $card_currency = Configuration::get('HIPAY_CURRENCY_CARDS');
     if (Tools::strlen($card_currency) > 3) {
         $currency_array = $this->getCurrency((int) $cart->id_currency);
         $currency = $currency_array[0]['iso_code'];
         foreach ($currency_array as $key => $value) {
             if ($value['id_currency'] == $cart->id_currency) {
                 $actual_currency = $value['iso_code'];
             }
         }
         $card_currency_arr = explode(',', Tools::substr($card_currency, 1, -1));
         foreach ($card_currency_arr as $key => $value) {
             foreach ($cart_arr as $cardkey => $cardvalue) {
                 if ($value == '"' . $actual_currency . '-' . $cardvalue . '"') {
                     $card_curr_val[$cardvalue] = true;
                 }
             }
         }
     } else {
         foreach ($cart_arr as $cardkey => $cardvalue) {
             $card_curr_val[$cardvalue] = true;
         }
     }
     $btn_image = '';
     $card_currency_ok = '0';
     $payment_product_list_upd = '';
     $count_ccards = 0;
     foreach ($cart_arr as $key => $value) {
         if ($value == 'visa' && $card_curr_val['visa']) {
             $btn_image .= '<img class= "hipay_method" src="' . _MODULE_DIR_ . $this->name . '/img/visa_small.png" alt="Visa" />';
             $card_currency_ok = '1';
             $payment_product_list_upd .= 'visa,';
             $count_ccards++;
         }
         if ($value == 'mastercard' && $card_curr_val['mastercard']) {
             $btn_image .= '<img class= "hipay_method" src="' . _MODULE_DIR_ . $this->name . '/img/mc_small.png" alt="MasterCard" />';
             $card_currency_ok = '1';
             $payment_product_list_upd .= 'mastercard,';
             $count_ccards++;
         }
         if ($value == 'american-express' && $card_curr_val['american-express']) {
             $btn_image .= '<img class= "hipay_method" src="' . _MODULE_DIR_ . $this->name . '/img/amex_small.png" alt="American Express" />';
             $card_currency_ok = '1';
             $payment_product_list_upd .= 'american-express,';
             $count_ccards++;
         }
         if ($value == 'bcmc' && $card_curr_val['bcmc']) {
             $btn_image .= '<img class= "hipay_method" src="' . _MODULE_DIR_ . $this->name . '/img/bcmc_small.png" alt="Bancontact / Mister Cash" />';
             $card_currency_ok = '1';
             $payment_product_list_upd .= 'bcmc,';
             $count_ccards++;
         }
         if ($value == 'cb' && $card_curr_val['cb']) {
             $btn_image .= '<img class= "hipay_method" src="' . _MODULE_DIR_ . $this->name . '/img/cb_small.png" alt="CB" />';
             $card_currency_ok = '1';
             $payment_product_list_upd .= 'cb,';
             $count_ccards++;
         }
         if ($value == 'maestro' && $card_curr_val['maestro']) {
             $btn_image .= '<img class= "hipay_method" src="' . _MODULE_DIR_ . $this->name . '/img/maestro_small.png" alt="Maestro" />';
             $card_currency_ok = '1';
             $payment_product_list_upd .= 'maestro,';
             $count_ccards++;
         }
     }
     // Assign smarty variables
     $smarty->assign(array('token_display' => $token_display, 'allow_memorize' => $allow_memorize, 'tokens' => $tokens, 'payment_mode' => Configuration::get('HIPAY_PAYMENT_MODE'), 'PS_VERSION' => _PS_VERSION_, 'btn_image' => $btn_image, 'card_currency_ok' => $card_currency_ok, 'payment_product_list_upd' => $payment_product_list_upd, 'count_ccards' => $count_ccards));
     // Assign paths
     $smarty->assign(array('this_path' => $this->_path, 'this_path_bw' => $this->_path, 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->name . '/'));
     // Local cards variables
     $localPayments = Tools::jsonDecode(Configuration::get('HIPAY_LOCAL_PAYMENTS'));
     $local_cards = $this->checkLocalCards();
     // Retrieving images and storing in any array associate to the card code.
     $local_cards_img = array();
     $local_cards_name = array();
     $show_cards = array();
     if (count($local_cards)) {
         $currency_array = $this->getCurrency((int) $cart->id_currency);
         $currency = $currency_array[0]['iso_code'];
         foreach ($currency_array as $key => $value) {
             if ($value['id_currency'] == $cart->id_currency) {
                 $actual_currency = $value['iso_code'];
             }
         }
         foreach ($local_cards as $key => $value) {
             $local_cards_img[(string) $value->code] = (string) $value->image;
             $local_cards_name[(string) $value->code] = (string) $value->name;
             $show_cards[(string) $value->code] = 'false';
             // Initialize to false
             // Assigning temporary code to variable
             $card_code = (string) $value->code;
             foreach ($value->currencies as $key => $value) {
                 foreach ($value->iso_code as $key => $value) {
                     if (Tools::strtoupper($actual_currency) == Tools::strtoupper((string) $value)) {
                         $show_cards[$card_code] = 'true';
                         // Update to true
                     }
                 }
             }
         }
     }
     if (count($localPayments)) {
         $allow_local_cards = 'true';
     } else {
         $allow_local_cards = 'false';
     }
     $smarty->assign(array('allow_local_cards' => $allow_local_cards, 'local_cards_list' => $localPayments, 'local_cards_img' => $local_cards_img, 'local_cards_name' => $local_cards_name, 'show_cards' => $show_cards));
     // modif One Page Checkout
     // Check if cart is in OPC
     $is_opc = Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'true' : 'false';
     $id_opc = '';
     // Set id_opc to empty by default
     if ($is_opc == 'true') {
         $id_opc = 'OPC';
         // This will update hidden field 'ioBB' to 'ioBBOPC' to prevent duplicate id
     }
     // Add generic smarty variables;
     $smarty->assign(array('id_opc' => $id_opc));
     return $this->display(__FILE__, '1.4/views/templates/hook/payment.tpl');
 }
 /**
  *
  * @see FrontController::postProcess()
  */
 public function postProcess()
 {
     $hipay = new HiPay_Tpp();
     //$cart = $this->context->cart;
     $context = Context::getContext();
     $cart = $context->cart;
     if (!$this->module->checkCurrency($cart)) {
         Tools::redirect('index.php?controller=order&xer=1');
     }
     $context->smarty->assign(array('nbProducts' => $cart->nbProducts(), 'cust_currency' => $cart->id_currency, 'currencies' => $this->module->getCurrency((int) $cart->id_currency), 'total' => $cart->getOrderTotal(true, Cart::BOTH), 'this_path' => $this->module->getPathUri(), 'this_path_bw' => $this->module->getPathUri(), 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->module->name . '/'));
     // Token is called when the user ENTERS the card details.
     $paymentproductswitcher = Tools::getValue('paymentproductswitcher');
     if ($paymentproductswitcher == 'american-express') {
         // American Express
         // No cardHolder, but firstname and lastname
         $cardNumber = Tools::getValue('cardNumber');
         $cardHolder = null;
         $cardFirstName = Tools::getValue('cardFirstName');
         $cardLastName = Tools::getValue('cardLastName');
         $cardExpiryMonth = Tools::getValue('cardExpiryMonth');
         $cardExpiryYear = Tools::getValue('cardExpiryYear');
         $cardSecurityCode = Tools::getValue('cardSecurityCode');
         $cardMemorizeCode = Tools::getValue('cardMemorizeCode');
         $cartUseExistingToken = Tools::getValue('cartUseExistingToken');
         $cardToken = Tools::getValue('cardToken');
     } else {
         if ($paymentproductswitcher == 'bcmc') {
             // BanckContact/MisterCash
             // No CRC check
             $cardNumber = Tools::getValue('cardNumber');
             $cardHolder = Tools::getValue('cardHolder');
             $cardFirstName = null;
             $cardLastName = null;
             $cardExpiryMonth = Tools::getValue('cardExpiryMonth');
             $cardExpiryYear = Tools::getValue('cardExpiryYear');
             $cardSecurityCode = null;
             $cardMemorizeCode = Tools::getValue('cardMemorizeCode');
             $cartUseExistingToken = Tools::getValue('cartUseExistingToken');
             $cardToken = Tools::getValue('cardToken');
         } else {
             $cardNumber = Tools::getValue('cardNumber');
             $cardHolder = Tools::getValue('cardHolder');
             $cardFirstName = null;
             $cardLastName = null;
             $cardExpiryMonth = Tools::getValue('cardExpiryMonth');
             $cardExpiryYear = Tools::getValue('cardExpiryYear');
             $cardSecurityCode = Tools::getValue('cardSecurityCode');
             $cardMemorizeCode = Tools::getValue('cardMemorizeCode');
             $cartUseExistingToken = Tools::getValue('cartUseExistingToken');
             $cardToken = Tools::getValue('cardToken');
         }
     }
     if ($cartUseExistingToken) {
         // $cartUseExistingToken = 1 -> Use memorized card token.
         // Pre-check
         $errors = true;
         // Initialize to true
         if ($cardToken != '' || $cardToken != null) {
             if ($cardToken) {
                 $token_to_use = $cardToken;
                 // This variable will be used to make the payment. Assign only when token is present.
                 $errors = false;
                 // proceed with the submit
             }
         }
         // If $cardToken is null or empty or false
         // Send error 999 to indicate that user should select the card
         if ($errors) {
             $cardtoken = '999';
         }
     } else {
         // $cartUseExistingToken = 0 -> Default processing of fetching card token.
         $cardtoken = HipayToken::createToken($cardNumber, $cardHolder, $cardExpiryMonth, $cardExpiryYear, $cardSecurityCode, $cardFirstName, $cardLastName, $paymentproductswitcher);
         // Pre-check
         $errors = true;
         // Initialize to true
         if (is_object($cardtoken)) {
             // Verify if token is not 0 or false
             if ($cardtoken->token) {
                 if ($cardMemorizeCode == 'memorize') {
                     HipayToken::saveToken($cardtoken, $cart);
                 }
                 $token_to_use = $cardtoken->token;
                 // This variable will be used to make the payment. Assign only when token is present.
                 $errors = false;
                 // proceed with the submit
             }
         }
     }
     if ($errors) {
         $cart = $context->cart;
         $context->smarty->assign(array('nbProducts' => $cart->nbProducts(), 'cust_currency' => $cart->id_currency, 'currencies' => $this->module->getCurrency((int) $cart->id_currency), 'total' => $cart->getOrderTotal(true, Cart::BOTH), 'this_path' => $this->module->getPathUri(), 'this_path_bw' => $this->module->getPathUri(), 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->module->name . '/'));
         $currency_array = $this->module->getCurrency((int) $cart->id_currency);
         $currency = $currency_array[0]['iso_code'];
         foreach ($currency_array as $key => $value) {
             if ($value['id_currency'] == $cart->id_currency) {
                 $actual_currency = $value['iso_code'];
             }
         }
         if ($currency != $actual_currency) {
             $currency = $actual_currency;
         }
         $context->smarty->assign(array('status_error' => (int) $cardtoken, 'cart_id' => $cart->id, 'currency' => $currency, 'amount' => $cart->getOrderTotal(true, Cart::BOTH)));
         // Tpl will load a form that will store those infomations.
         $context->controller->addCSS(_MODULE_DIR_ . $this->module->name . '/css/hipay.css');
         $context->controller->addJs(_MODULE_DIR_ . $this->module->name . '/js/15hipay.js');
         $card_str = Configuration::get('HIPAY_ALLOWED_CARDS');
         $selection_cards = array('american-express' => $hipay->l('American Express'), 'bcmc' => $hipay->l('Bancontact / Mister Cash'), 'cb' => $hipay->l('Carte Bancaire'), 'maestro' => $hipay->l('Maestro'), 'mastercard' => $hipay->l('MasterCard'), 'visa' => $hipay->l('Visa'));
         $cart_arr = explode(',', $card_str);
         $carte = array();
         foreach ($cart_arr as $key => $value) {
             foreach ($selection_cards as $key1 => $value1) {
                 if ($key1 && $value == $key1) {
                     $carte[$key1] = $value1;
                 }
             }
         }
         $context->smarty->assign(array('cartes' => $carte));
         $tokens = HipayToken::getTokens($cart->id_customer);
         //
         if ($tokens['0']) {
             $token_display = 'true';
         } else {
             $token_display = 'false';
         }
         $allow_memorize = HipayClass::getShowMemorization();
         if (_PS_VERSION_ >= '1.6') {
             $show_breadcrumb = false;
         } else {
             $show_breadcrumb = true;
         }
         $context->smarty->assign(array('token_display' => $token_display, 'allow_memorize' => $allow_memorize, 'show_breadcrumb' => $show_breadcrumb, 'tokens' => $tokens));
         $payment_tpl = 'payment_execution_api.tpl';
         return $this->setTemplate($payment_tpl);
         die;
     } else {
         // Mode API
         // Constructs data array and sends it as a parameter to the tpl
         $data = HipayToken::getApiData($cart, $token_to_use, null, $cartUseExistingToken);
         $response = HipayApi::restApi('order', $data);
         // Check if 3D secure is activated
         //if((int)$data['authentication_indicator'])
         //{
         // Check if forwardURL is true
         if ($response->forwardUrl) {
             // Redirect user
             Tools::redirect($response->forwardUrl);
         }
         //}
         if (get_class($response) != 'Exception') {
             switch ($response->state) {
                 case 'completed':
                     $response_state = 'completed';
                     break;
                 case 'forwarding':
                     $response_state = 'forwarding';
                     break;
                 case 'pending':
                     $response_state = 'pending';
                     break;
                 case 'declined':
                     $response_state = 'declined';
                     break;
                 case 'error':
                 default:
                     $response_state = 'error';
                     break;
             }
             $context->smarty->assign(array('error_code' => '', 'error_message' => '', 'error_response' => '', 'response_state' => $response_state));
         } else {
             $response_code = $response->getCode();
             $response_message = $response->getMessage();
             $context->smarty->assign(array('error_code' => $response_code, 'error_message' => $response_message, 'error_response' => 'exception_error', 'response_state' => 'error'));
         }
         switch ($response_state) {
             case 'completed':
                 $redirect_url = HipayClass::getRedirectionUrl(Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'index.php?fc=module&module=' . $hipay->name . '&controller=accept');
                 break;
             case 'declined':
                 $redirect_url = HipayClass::getRedirectionUrl(Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'index.php?fc=module&module=' . $hipay->name . '&controller=decline');
                 break;
             case 'cancel':
                 $redirect_url = HipayClass::getRedirectionUrl(Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'index.php?fc=module&module=' . $hipay->name . '&controller=cancel');
                 break;
             case 'pending':
             case 'forwarding':
                 $redirect_url = HipayClass::getRedirectionUrl(Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'index.php?fc=module&module=' . $hipay->name . '&controller=pending');
                 // Implementing challenge url
                 // Redirecting to challenge url if url present
                 if (Configuration::get('HIPAY_CHALLENGE_URL')) {
                     $redirect_url = Configuration::get('HIPAY_CHALLENGE_URL');
                 }
                 break;
             case 'exception':
             default:
                 $redirect_url = HipayClass::getRedirectionUrl(Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'index.php?fc=module&module=' . $hipay->name . '&controller=exception');
                 break;
         }
         // Disconnect User from cart
         HipayClass::unsetCart();
         die('
             <script type="text/javascript">
                 try{
                     parent.window.location.replace("' . $redirect_url . '");
                 }catch(e){
                     alert(e);
                 }
             </script>
             <h1>' . Tools::displayError('Now loading..') . '</h1>
         ');
         $this->setTemplate('payment_api_response.tpl');
     }
 }
 /**
  *
  * @see FrontController::initContent()
  */
 public function initContent()
 {
     $hipay = new HiPay_Tpp();
     $this->display_column_left = false;
     $this->display_column_right = false;
     parent::initContent();
     #PROFILEO64 - Multishop issue when using $this->context->cart. Switching to Context::getContext()
     //$cart = $this->context->cart;
     $context = Context::getContext();
     $cart = $context->cart;
     if (!$this->module->checkCurrency($cart)) {
         Tools::redirect('index.php?controller=order&xer=1');
     }
     // Check if cart_id has already been stored in tbl cart_sent
     $override_payment_mode = false;
     $cart_id_count = Db::getInstance()->getValue("SELECT COUNT( cart_id ) FROM  `" . _DB_PREFIX_ . "hipay_cart_sent` WHERE cart_id = '" . (int) $cart->id . "'");
     if ($cart_id_count == 0) {
         // Not found. Add new entry
         $sql_add_cart_id = "INSERT INTO `" . _DB_PREFIX_ . "hipay_cart_sent` (`cart_id`, `timestamp`)\r\n            VALUES('" . (int) $cart->id . "', NOW() )";
         Db::getInstance()->execute($sql_add_cart_id);
     }
     /*
     		// TPPPRS-23
     		else{
     			// Found. Duplicate cart
     			$duplicate_status_msg = HipayClass::duplicateCart();
     			if($duplicate_status_msg)
     			{
     				$override_payment_mode = true;
     			}
     		}*/
     $context->smarty->assign(array('nbProducts' => $cart->nbProducts(), 'cust_currency' => $cart->id_currency, 'currencies' => $this->module->getCurrency((int) $cart->id_currency), 'total' => $cart->getOrderTotal(true, Cart::BOTH), 'this_path' => $this->module->getPathUri(), 'this_path_bw' => $this->module->getPathUri(), 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->module->name . '/'));
     $context->controller->addCSS(_MODULE_DIR_ . $this->module->name . '/css/hipay.css');
     $context->controller->addJs(_MODULE_DIR_ . $this->module->name . '/js/15hipay.js');
     $hipay_payment_mode = Configuration::get('HIPAY_PAYMENT_MODE');
     if (Tools::getValue('cartMemorizeToken')) {
         $sql_insert = "INSERT INTO `" . _DB_PREFIX_ . "hipay_tokens_tmp` (`cart_id`) VALUES('" . $cart->id . "')";
         @Db::getInstance()->execute($sql_insert);
     }
     // Initializing the payment mode to the default configuration mode
     $payment_mode = Configuration::get('HIPAY_PAYMENT_MODE');
     // Check card used - if card used is a local card, force mode 'dedicated page'
     if (Tools::isSubmit('localcardToken') && tools::getValue('localcardToken')) {
         // Override to mode page dedicated
         $payment_mode = 3;
     }
     // Last check, if $override_payment_mode = true then override all payement modes and force error message display
     /*
     		// TPPPRS-23
     		if($override_payment_mode) {
     			// Override to mode page cart duplicated
     			$payment_mode = 4;
     			// Use $duplicate_status_msg to display msg err
     		}*/
     // Different calls depending on Payment mode
     switch ($payment_mode) {
         case 1:
             // Mode Iframe
             $data = HipayApi::getApiData($cart, 'iframe');
             $response = $this->restApi('hpayment', $data);
             // Update to display montant
             $currency_array = $this->module->getCurrency((int) $cart->id_currency);
             $currency = $currency_array[0]['iso_code'];
             foreach ($currency_array as $key => $value) {
                 if ($value['id_currency'] == $cart->id_currency) {
                     $actual_currency = $value['iso_code'];
                 }
             }
             if ($currency != $actual_currency) {
                 $currency = $actual_currency;
             }
             if (Tools::strlen(Configuration::get('HIPAY_IFRAME_WIDTH')) > 0) {
                 $iframe_width = Configuration::get('HIPAY_IFRAME_WIDTH');
             } else {
                 $iframe_width = '100%';
             }
             if (Tools::strlen(Configuration::get('HIPAY_IFRAME_HEIGHT')) > 0) {
                 $iframe_height = Configuration::get('HIPAY_IFRAME_HEIGHT');
             } else {
                 $iframe_height = '670';
             }
             if (_PS_VERSION_ >= '1.6') {
                 $show_breadcrumb = false;
             } else {
                 $show_breadcrumb = true;
             }
             $context->smarty->assign(array('iframe_url' => $response->forwardUrl, 'cart_id' => $cart->id, 'currency' => $currency, 'show_breadcrumb' => $show_breadcrumb, 'amount' => $cart->getOrderTotal(true, Cart::BOTH), 'iframe_width' => $iframe_width, 'iframe_height' => $iframe_height));
             $payment_tpl = 'payment_execution_iframe.tpl';
             break;
         case 2:
             // Mode API
             // Constructs data array and sends it as a parameter to the tpl
             $currency_array = $this->module->getCurrency((int) $cart->id_currency);
             $currency = $currency_array[0]['iso_code'];
             foreach ($currency_array as $key => $value) {
                 if ($value['id_currency'] == $cart->id_currency) {
                     $actual_currency = $value['iso_code'];
                 }
             }
             if ($currency != $actual_currency) {
                 $currency = $actual_currency;
             }
             $context->smarty->assign(array('status_error' => '200', 'cart_id' => $cart->id, 'currency' => $currency, 'amount' => $cart->getOrderTotal(true, Cart::BOTH)));
             // Tpl will load a form that will store those infomations.
             $card_str = Configuration::get('HIPAY_ALLOWED_CARDS');
             $selection_cards = array('american-express' => $hipay->l('American Express'), 'bcmc' => $hipay->l('Bancontact / Mister Cash'), 'cb' => $hipay->l('Carte Bancaire'), 'maestro' => $hipay->l('Maestro'), 'mastercard' => $hipay->l('MasterCard'), 'visa' => $hipay->l('Visa'));
             $cart_arr = explode(',', $card_str);
             $carte = array();
             foreach ($cart_arr as $key => $value) {
                 foreach ($selection_cards as $key1 => $value1) {
                     if ($key1 && $value == $key1) {
                         $carte[$key1] = $value1;
                     }
                 }
             }
             $context->smarty->assign(array('cartes' => $carte));
             $tokens = HipayToken::getTokens($cart->id_customer);
             //
             if (isset($tokens['0'])) {
                 $token_display = 'true';
             } else {
                 $token_display = 'false';
             }
             $allow_memorize = HipayClass::getShowMemorization();
             if (_PS_VERSION_ >= '1.6') {
                 $show_breadcrumb = false;
             } else {
                 $show_breadcrumb = true;
             }
             $context->smarty->assign(array('token_display' => $token_display, 'allow_memorize' => $allow_memorize, 'show_breadcrumb' => $show_breadcrumb, 'tokens' => $tokens));
             $payment_tpl = 'payment_execution_api.tpl';
             break;
         case 3:
             $local_card = tools::getValue('localcardToken');
             $data = HipayApi::getApiData($cart, null, null, $local_card);
             if ($local_card == 'sofort-uberweisung' || $local_card == 'sisal' || $local_card == 'przelewy24' || $local_card == 'webmoney' || $local_card == 'yandex' || $local_card == 'paypal') {
                 $data['payment_product'] = $local_card;
                 unset($data['payment_product_list']);
                 unset($data['merchant_display_name']);
                 unset($data['css']);
                 $response = $this->restApi('order', $data);
             } else {
                 $response = $this->restApi('hpayment', $data);
             }
             if ($response == false) {
                 // Wrong response, redirect to page order first step
                 Tools::redirect('index.php?controller=order&xer=2');
             }
             Tools::redirect($response->forwardUrl);
             break;
         case 4:
             // Use $duplicate_status_msg to display msg err
             if (_PS_VERSION_ >= '1.6') {
                 $show_breadcrumb = false;
             } else {
                 $show_breadcrumb = true;
             }
             $context->smarty->assign(array('duplicate_status_msg' => $duplicate_status_msg, 'show_breadcrumb' => $show_breadcrumb));
             $payment_tpl = 'payment_cart_duplicate.tpl';
             break;
         case 0:
         default:
             // Dedicated page
             // NO TPL NEEDED, will redirect to response forwardURL
             if (Tools::isSubmit('localcardToken') && tools::getValue('localcardToken')) {
                 $local_card = tools::getValue('localcardToken');
             } else {
                 $local_card = null;
             }
             $data = HipayApi::getApiData($cart, null, null, $local_card);
             $response = $this->restApi('hpayment', $data);
             if ($response == false) {
                 // Wrong response, redirect to page order first step
                 Tools::redirect('index.php?controller=order&xer=2');
             }
             Tools::redirect($response->forwardUrl);
             break;
     }
     $this->setTemplate($payment_tpl);
 }