Estoy intentando "arreglar" un módulo para usar en Oscommerce el pago a través de Ibercaja, hasta ahora tengo esto, este es el archivo que va en /includes/modules/payment/:
Código PHP:
<?php
class ibercaja {
var $code, $title, $description, $enabled;
// class constructor
function ibercaja() {
$this->code = 'ibercaja';
$this->title = MODULE_PAYMENT_IBERCAJA_TEXT_TITLE;
$this->description = MODULE_PAYMENT_IBERCAJA_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_IBERCAJA_SORT_ORDER;
$this->enabled = MODULE_PAYMENT_IBERCAJA_STATUS;
}
// class methods
function javascript_validation() {
return $validation_string;
}
function selection() {
return array('id' => $this->code,
'module' => $this->title);
return $selection_string;
}
function pre_confirmation_check() {
global $HTTP_POST_VARS;
}
function confirmation() {
global $HTTP_POST_VARS, $CardName, $CardNumber;
$confirmation_string = '<table border="0" cellspacing="0" cellpadding="0" width="100%">' . "\n" .
'<tr>' . "\n" .
'<td class="main"> Pago con Tarjeta  </td>' . "\n" .
' </tr>' . "\n" .
'</table>' . "\n";
return $confirmation_string;
}
function process_button() {
global $HTTP_POST_VARS,$order,$total_cost,$total_tax,$shipping_cost,$currency;
//$coste_total=$total_cost+$total_tax+$shipping_cost;
$coste_total=$order->info['total'];
$process_button_string = tep_draw_hidden_field('moneda',$currency).
tep_draw_hidden_field('coste_total',$coste_total).
tep_draw_hidden_field('estado_venta','firma');
return $process_button_string;
}
function before_process() {
global
$HTTP_POST_VARS,$HTTP_GET_VARS,$order,$total_cost,$total_tax,$shipping_cost,$shipping_method,$currency,$moneda,$coste_total,$refe_venta,$estado_venta;
//aquí realizaremos la compra del tvp... a ver que pasa.
if (ENABLE_SSL) {
$prefijo='https://';
}else{
$prefijo='http://';
}
//aqui la direccion del comercio
$dirlocal=$prefijo.'www.dominio.com';
//aqui la direccion web del tpv
$dirtpv='https://tvp.ibercaja.es:443/servlet/TPVv';
//aqui va el codigo de comercio que el banco te asigna.
$codcomercio='CODIGO_DE_COMERCIO';
//este dato tambien lo suministra el banco
$refcomercio='CLAVE_COMERCIO';
//usuario y password, los asigna el banco.
$usucomercio='USUARIO';
$passcomercio='CONTRASEÑA';
//fin variables tpv
if ($estado_venta=='firma'){
$refe_venta=dechex(gmmktime()); //es importante enviar una referencia de venta
//el coste, sin decimales, si lleva centimos los quitamos, por cien
$coste_total=$coste_total*100;
//codigo de moneda, euro
$OB06='0978';
//numero de decimales
$OB07='2';
//AHORA GENERAMOS LA DIRECCIÓN DE RETORNO CON LOS VALORES QUE PRECISAREMOS:
$direccion_retorno=$dirlocal.'/checkout_process.php?'.
'prod=' . $HTTP_POST_VARS['prod'] . '&' .
'payment=' . $HTTP_POST_VARS['payment'] . '&' .
'comments=' . $HTTP_POST_VARS['comments'] . '&' .
'shipping_cost=' . $HTTP_POST_VARS['shipping_cost'] . '&' .
'shipping_method=' . $HTTP_POST_VARS['shipping_method'] . '&'.
//ESTOS SON VALORES PARA QUE LA CONEXIÓN CON TPVV FUNCIONE:
'moneda='.$HTTP_POST_VARS['moneda'].'&'.
'coste_total='.$coste_total.'&'.
'refe_venta='.$refe_venta.'&'.
'estado_venta=venta&';
// y ahora el formulario para la solicitud de la firma, que será este:
$dir_tpv_firma = 'https://tvp.ibercaja.es:443/servlet/Firma2?';
echo '<form name="checkout_confirmation" method="get" action="'.$dir_tpv_firma.'">'."\n".
'<input type="hidden" name="OB01" value="'.$codcomercio.'">'."\n" .
'<input type="hidden" name="OB02" value="'.$usucomercio.'">'."\n" .
'<input type="hidden" name="OB03" value="'.$passcomercio.'">'."\n" .
'<input type="hidden" name="OB05" value="'.$coste_total.'">'."\n" .
'<input type="hidden" name="OB06" value="'.$OB06.'">'."\n" .
'<input type="hidden" name="OB07" value="'.$OB07.'">'."\n" .
'<input type="hidden" name="OB08" value="'.$direccion_retorno.'">'."\n" .
'<input type="hidden" name="OB09" value="'.$usucomercio.'">'."\n" .
'<input type="hidden" name="OB10" value="'.$passcomercio.'">'."\n" .
'</form>'."\n" .
'<script languaje="JavaScript">document.checkout_confirmation.submit();</script>';
//este exit deberia detener la ejecucion de php
exit;
}else{
if ($estado_venta=='venta'){
$firma=$HTTP_GET_VARS['?OB01'];
$OB07='0978';
$OB08='2';
//AHORA GENERAMOS LA DIRECCIÓN DE RETORNO CON LOS VALORES QUE PRECISAREMOS:
$direccion_retorno_ok=$dirlocal.'/checkout_process.php?'.
'prod=' . $HTTP_GET_VARS['prod'] . '&' .
'payment=' . $HTTP_GET_VARS['payment'] . '&' .
'comments=' . $HTTP_GET_VARS['comments'] . '&' .
'shipping_cost=' . $HTTP_GET_VARS['shipping_cost'] . '&' .
'shipping_method=' . $HTTP_GET_VARS['shipping_method'] . '&'.
'estado_venta=ok';
// esta es la dirección de retorno no Ok del Tpv
$direccion_retorno_no_ok=$dirlocal.'/checkout_payment.php?error_message=Se+ha+producido+un+error+en+el+pago.';
// y ahora el formulario para la solicitud de la compra, que será este:
$dir_tpv_firma = 'https://tvp.ibercaja.es:443/servlet/Firma2?';
echo '<form name="checkout_confirmation" method="POST" action="'.$dir_tpv_firma.'">'."\n".
'<input type="hidden" name="OB01" value="'.$codcomercio.'">'."\n" .
'<input type="hidden" name="OB02" value="'.$direccion_retorno_ok.'">'."\n" .
'<input type="hidden" name="OB03" value="'.$direccion_retorno_no_ok.'">'."\n" .
'<input type="hidden" name="OB04" value="'.$firma.'">'."\n" .
'<input type="hidden" name="OB05" value="'.$refe_venta.'">'."\n" .
'<input type="hidden" name="OB06" value="'.$coste_total.'">'."\n" .
'<input type="hidden" name="OB07" value="'.$OB07.'">'."\n" .
'<input type="hidden" name="OB08" value="'.$OB08.'">'."\n" .
'<input type="hidden" name="OB12" value="0">'."\n" .
'<input type="hidden" name="OB15" value="'.$refcomercio.'">'."\n" .
'</form>'."\n" .
'<script languaje=JavaScript>document.checkout_confirmation.submit()</script>';
exit;
}ELSE{if ($estado_venta=='ok'){
//AHORA GENERAMOS LA DIRECCIÓN ultima QUE PRECISAREMOS:
$direccion_final=$dirlocal.'/checkout_process.php?osCsid='.$osCsid;
// y ahora el formulario para que se genere el pedido:
echo '<form name="checkout_confirmation" method="POST" action="'.$direccion_final.'">'."\n".
'<input type="hidden" name="prod" value="' . $HTTP_GET_VARS['prod'] . '">' ."\n" .
'<input type="hidden" name="payment" value="' . $HTTP_GET_VARS['payment'] . '">' ."\n" .
'<input type="hidden" name="comments" value="' . $HTTP_GET_VARS['comments'] . '">' ."\n" .
'<input type="hidden" name="shipping_cost" value="' . $HTTP_GET_VARS['shipping_cost'] . '">' ."\n" .
'<input type="hidden" name="shipping_method" value="' . $HTTP_GET_VARS['shipping_method'] . '">'."\n" .
'<input type="hidden" name="estado_venta" value ="fin">'."\n" .
'</form>'."\n" .
' <script languaje=JavaScript>document.checkout_confirmation.submit()</script>';
exit;
}else{if ($estado_venta="fin"){};
};
};
};
}
function after_process() {
global $insert_id;
}
function output_error() {
global $HTTP_GET_VARS;
$output_error_string = '<table border="0" cellspacing="0" cellpadding="0" width="100%">' . "\n" .
'<tr>' . "\n" .
'<td class="main"> <font color="#FF0000"><b>' . MODULE_PAYMENT_IBERCAJA_TEXT_ERROR .
'</b></font><br> ' . stripslashes(urldecode($HTTP_GET_VARS['ibercaja_val'])) . ' </td>' . "\n" .
' </tr>' . "\n" .
'</table>' . "\n";
return $output_error_string;
}
function check() {
$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key =
'MODULE_PAYMENT_IBERCAJA_STATUS'");
$check = tep_db_num_rows($check_query);
return $check;
}
function install() {
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Pago a traves Ibercaja','MODULE_PAYMENT_IBERCAJA_STATUS', '1', '¿Aceptas el pago a través de el Tpv Ibercaja?', '6', '0', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Preferencia ordinal al mostrar.', 'MODULE_PAYMENT_IBERCAJA_SORT_ORDER', '0', 'Preferencia ordinal en la lista de formas de pago. Un número menor indica mayor preferencia. ', '6', '0' , now())");
}
function remove() {
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_IBERCAJA_STATUS'");
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_IBERCAJA_SORT_ORDER'");
}
function keys() {
return array('MODULE_PAYMENT_IBERCAJA_STATUS', 'MODULE_PAYMENT_IBERCAJA_SORT_ORDER');
return $keys;
}
}
?>
Agradecería cualquier ayuda