mira es dificil ayudarte sin saber que tipo de modulo necesitas, voy a darte un ejemplo rapido con los parametros que tu post.
Dentro de la classe que debe tener el mismo nombre que el modulo pones:
Código PHP:
public function hookPayment($params){
if (!$this->active) return ;
/* moneda activada */
if (!$this->_checkCurrency($params['cart'])) return ;
/* en este caso solo llamamos a smarty */
global $smarty;
/* pasamos las rutas para links e imagenes*/
$smarty->assign(array(
'this_path' => $this->_path,
'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/'
));
return $this->display(__FILE__,'/pago.tpl');
}
de ese modo pasas los links y rutas para las imagenes.
ahora en el archivo "pago.tpl"
nota:
usamos los css por defecto de prestashop
tambien las sentencias para que puedas traducir el modulo al idioma que desees, recorda que mod='debe ir el nombre del modulo, y este mobre debe ser igual al directorio que contiene los archivos y a su vez debe tener el mismo nombre la classe principal.
asi que entoces en pago.tpl va:
Código HTML:
<p class="payment_module">
<a href="{$this_path_ssl}pago_page.php" title="{l s='CLICK PARA ABONAR CON' mod='aca mete el mombre del modulo'}">
<!-- img debe estar dentro del directorio del modulo con la imagen pago.png-->
<img src="{$this_path}/img/pago.png" alt="paga con modulo de pago etcc..." />
{l s='Paga con medio nombre....' mod='aca nombre del modulo'}
</a>
</p>
ahora creamos dentro de la classe principal lo que se ejecutara en pago_page.php
regresa a la clase principal y coloca justo despues de lo que colocamos primero:
Código PHP:
public function execPayment($cart){
if (!$this->active) return ;
/* verifica que tenga una moneda realcionada desde pago/divisas */
if (!$this->_checkCurrency($cart)) Tools::redirectLink(__PS_BASE_URI__.'order.php');
/* para pasar el id del carro */
/* ahora si enviamos los datos del cliente y todo lo que necesites
*/
global $cookie, $smarty;
$smarty->assign(array(
'cart' => (int)($cart->id),
'customerName' => Tools::safeOutput(($cookie->logged ? $cookie->customer_firstname : false)),
'customerLastname' => Tools::safeOutput(($cookie->logged ? $cookie->customer_lastname : false)),
/* como no se como debes crear tu hash lo hago como lo hiciste vos */
/* $cart->getTotalCart(true,3) <-- no se usa en versiones 1.4.x.x de prestashop */
'hash' => codificarHash((int)($cart->id), $cart->getOrderTotal(true, Cart::BOTH),time(),(int)($cart->id)),
/* por si necesitas cargar imagenes en el tpl usa */
'this_path' => $this->_path,
'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/'
));
return $this->display(__FILE__, 'pago_page.tpl');
}
ahora vamos crear el contenido de tu archivo "pago_page.php"
Fijate que en NOMBREDETUCLASSEPRINCIPAL debe ir el nombre de la classe que lleva el mismo nombre que el directorio del modulo
Código PHP:
/* protegemos el archivo*/
$useSSL = true;
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../header.php');
include(dirname(__FILE__).'/NOMBREDETUCLASSEPRINCIPAL.php');
/* verificamos que el usuario este logueado */
if (!$cookie->isLogged(true)) Tools::redirect('authentication.php?back=order.php');
$NOMBREDETUCLASSEPRINCIPAL = new nombredetuclasseprincipal();
/** llamamos a function execPayment que se encargara de cargar todo :-) */
echo $NOMBREDETUCLASSEPRINCIPAL->execPayment($cart);
include_once(dirname(__FILE__).'/../../footer.php');
ahora vamos a crear el contenido "pago_page.tpl"
la action del formuario lo hacemos por parametros predefinidos de prestashop, como seguridad limpiamos las variables con escape htmlall, podes usar otras.
Código HTML:
<div id="formConfirmar">
<form name="autorizationForm" method="post" class="std" action="{$request_uri}">
Username:
</td>
<td>
<input type="text" name="username" value="{$customerName|escape:'htmlall':'UTF-8'}} {$customerLastname|escape:'htmlall':'UTF-8'}}" id="username" />
</td>
</tr>
<tr>
<td style="float: right;">
key_id:
</td>
<td>
<input type="text" name="key_id"
value="{$cart|escape:'htmlall':'UTF-8'}}" id="key_id" />
</td>
</tr>
<tr>
<td style="float: right;">
hash:
</td>
<td>
<input type="text" name="hash"
value="{$hash|escape:'htmlall':'UTF-8'}}" id="hash" />
</td>
por ultimo antes del cierre de la classe o sea antes del ultimo "}" tendria que ir esto:
Código PHP:
private function _checkCurrency($cart)
{
$currency_order = new Currency((int)($cart->id_currency));
$currencies_module = $this->getCurrency((int)$cart->id_currency);
$currency_default = Configuration::get('PS_CURRENCY_DEFAULT');
if (is_array($currencies_module))
foreach ($currencies_module AS $currency_module)
if ($currency_order->id == $currency_module['id_currency'])
return true;
}
saludos!!
PD: Pues si te sirve de algo yo hago modulo de pago para prestashop !