Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Módulo de oscommerce para el pago por Ibercaja

Estas en el tema de Módulo de oscommerce para el pago por Ibercaja en el foro de Sistemas de gestión de contenidos en Foros del Web. Hola de nuevo!! Estoy intentando "arreglar" un módulo para usar en Oscommerce el pago a través de Ibercaja, hasta ahora tengo esto, este es el ...
  #1 (permalink)  
Antiguo 01/07/2005, 18:57
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Módulo de oscommerce para el pago por Ibercaja

Hola de nuevo!!

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">&nbsp;Pago con Tarjeta &nbsp</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">&nbsp;<font color="#FF0000"><b>' MODULE_PAYMENT_IBERCAJA_TEXT_ERROR .
'</b></font><br>&nbsp;' stripslashes(urldecode($HTTP_GET_VARS['ibercaja_val'])) . '&nbsp;</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;
}
}
?>
El problema está en que cuendo pasa la firma, devuelve un archivo en lugar de validarla y ahí es cuando ya me he perdido. El archivo lleva el nombre de las variable y valores pasados por GET y el contenido, según parece, es la firma que debería comprobar (creo)

Agradecería cualquier ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:59.