Tema: Tpv Bbva
Ver Mensaje Individual
  #34 (permalink)  
Antiguo 19/03/2008, 02:32
dex307
 
Fecha de Ingreso: diciembre-2007
Mensajes: 20
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Tpv Bbva

Cita:
Iniciado por chinoloco Ver Mensaje
Hola jerkan, queria preguntarte algunas cosas, yo programo en php, mira yo recien tengo una semana trabajando en una empresa y bueno ya me piedieron implentar un tpv virtual , osea hay una pagina montada y quieren q se haga la concexion al tpv virtual del bbva, la verdad soy muy novato en esa parte de programacion, quisiera q me des una idea ( o alguien q pueda ) de lo q tengo q hacer , bueno tengo un manual pero no logro concretar la idea : de momento , se que el formulario final de venta online envia los datos a a un script , pero no se si en ese script se genera la la clave ofuscada , y a dodne envio los datos , la verdad quisiera q me aclaren esas cosas. ojala pudieras explicarme un pco tu codigo , veo q utilizas algunas funciones, pero no las has puesto, no se si pudieras ponerlas para asi darme una idea te lo agradeceria mucho ....muchas gracias de antemano
Se que la pregunta no es para mí, pero igual esto te puede ayudar. Esto es lo que hago yo. La clave ofuscada se genera antes de enviar la peticion al tpv del BBVA.
Código PHP:
                  $id_transaccion=date("mdHis").rand(10,99);
      
                  
//Datos proporcionados por el BBVA:
                  
$MODULE_PAYMENT_BBVA_SIGNATURE_KEY="";
                  
$MODULE_PAYMENT_BBVA_COMMERCE_ID="";
                  
$MODULE_PAYMENT_BBVA_SIGNATURE=
                  
$MODULE_PAYMENT_BBVA_TERMINAL_ID=;
                  
   
$des_key=$MODULE_PAYMENT_BBVA_SIGNATURE_KEY.substr($MODULE_PAYMENT_BBVA_COMMERCE_ID,0,9)."***";
                  
$obfuscated=$MODULE_PAYMENT_BBVA_SIGNATURE;
                  
$desobfuscated=desobfuscate($obfuscated$des_key);
      
                      
//Total amount
                      
                     
$importe=$pvp;
                     
$importe=round($importe,2);
                  
                  
$importe=number_format($importe2'.''');      
                   
$nf_importe=str_replace('.','',$importe);                   
                   
$lt="<";
                  
$gt=">";
                  
$moneda="978";

                  
//Session id to return back
                  
$localizador=;

                  
//Signature calculation
                  
$datosfirma $MODULE_PAYMENT_BBVA_TERMINAL_ID.$MODULE_PAYMENT_BBVA_COMMERCE_ID.$id_transaccion.$nf_importe.$moneda.$localizador.$desobfuscated;
                  
$datosfirma2 $MODULE_PAYMENT_BBVA_TERMINAL_ID."-".$MODULE_PAYMENT_BBVA_COMMERCE_ID."-".$id_transaccion."-".$nf_importe."-".$moneda."-".$desobfuscated;
                  
$firma=strtoupper(sha1($datosfirma));                  
              
$url_redir=""//url donde redireccionas despues de realizar el pago.
                  
                 
$url_comercio="";//url donde compruebas que el pago se realiza correctamente.
                
                  
$xml.=$lt."tpv".$gt;
            
$xml.=$lt."oppago".$gt;
            
$xml.=$lt."idterminal".$gt.$MODULE_PAYMENT_BBVA_TERMINAL_ID.$lt."/idterminal".$gt;
            
$xml.=$lt."idcomercio".$gt.$MODULE_PAYMENT_BBVA_COMMERCE_ID.$lt."/idcomercio".$gt;                    
            
$xml.=$lt."idtransaccion".$gt.$id_transaccion.$lt."/idtransaccion".$gt;
            
$xml.=$lt."moneda".$gt.$moneda.$lt."/moneda".$gt;            
            
$xml.=$lt."importe".$gt.$importe.$lt."/importe".$gt;                        
            
$xml.=$lt."urlcomercio".$gt.$url_comercio.$lt."/urlcomercio".$gt;            
            
$xml.=$lt."idioma".$gt."es".$lt."/idioma".$gt;                        
            
$xml.=$lt."pais".$gt."ES".$lt."/pais".$gt;                                    
            
$xml.=$lt."urlredir".$gt.$url_redir.$lt."/urlredir".$gt;                                    
            
$xml.=$lt."firma".$gt.$firma.$lt."/firma".$gt;                                                            
            
$xml.=$lt."localizador".$gt.$localizador.$lt."/localizador".$gt;
            
$xml.=$lt."/oppago".$gt;
            
$xml.=$lt."/tpv".$gt
Y este es el formulario para enviar el pago.
<form name="checkout_confirmation" action="https://w3.grupobbva.com/TLPV/tlpv/TLPV_pub_RecepOpModeloServidor" method="post">
<input type="hidden" name="peticion" value="<?=$xml;?>">
<input type="image" src="" border="0" alt="Confirm Buy" title=" Confirmar Pedido">
</form>

En la dirección que pongas en $url_comercio tienes que comprobar que el pago se realiza correctamente.
El resultado del pago se te envía mediante $_GET['peticion'], pero no intentes ver nada por el navegador. Este script ($url_comercio) se ejecuta de forma "oculta", y lo que tienes que hacer es o bien almacenar el resultado en un fichero de texto, o mejor, en una base de datos. Será en un aplicación donde consultes a la base de datos (o al fichero de texto) para ver si el pago se ha realizado o no.

$localizador lo uso para saber qué producto se ha pagado.
Si no lo vas a usar, es necesario que lo quites también del XML peticion que envias en el formulario.

Te paso también el código de la función desobfuscate:
Código PHP:
function desobfuscate($pal_sec_ofuscada,$clave_xor)
    {
        
$trozos explode (";"$pal_sec_ofuscada);
        
$tope count($trozos);
        
        
$res="";
        
        for (
$i=0$i<$tope$i++)
        {
                
$x1=ord($clave_xor[$i]);
                
$x2=hexdec($trozos[$i]);
                
$r=$x1 $x2;
                
$res.=chr($r);
        }

        return(
$res);
     }