Foros del Web » Programando para Internet » PHP »

Tpv Bbva

Estas en el tema de Tpv Bbva en el foro de PHP en Foros del Web. Ya está jerkan, ahora si que si. Era eso, guardando los datos en un fichero de texto y no ejecutando yo ese script, los datos ...

  #31 (permalink)  
Antiguo 20/12/2007, 06:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Tpv Bbva

Ya está jerkan, ahora si que si.
Era eso, guardando los datos en un fichero de texto y no ejecutando yo ese script, los datos llegan y se almacenan.

No puedes llegar a imaginarte lo agradecido que te estoy.
  #32 (permalink)  
Antiguo 20/12/2007, 14:10
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Tpv Bbva

De nada. Para eso estamos
  #33 (permalink)  
Antiguo 18/03/2008, 14:03
Avatar de chinoloco  
Fecha de Ingreso: julio-2003
Mensajes: 83
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Tpv Bbva

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
  #34 (permalink)  
Antiguo 19/03/2008, 02:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 20
Antigüedad: 16 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);
     } 
  #35 (permalink)  
Antiguo 19/03/2008, 13:55
Avatar de chinoloco  
Fecha de Ingreso: julio-2003
Mensajes: 83
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Tpv Bbva

hola dex307, muchas gracias por tu respuesta, tambien habia visto tu codigo, pues lo probare y te comento. muchas gracias.
  #36 (permalink)  
Antiguo 19/03/2008, 15:14
Avatar de chinoloco  
Fecha de Ingreso: julio-2003
Mensajes: 83
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Tpv Bbva

hola dex307, todo el codigo esta my bien , pero tengo unas preguntas: no me queda claro en que momento se mandan los datos de la tarjeta de credito del cliente, segun entiendo se puede mandar con los datos del xml (eso creo) , bueno cuentame si es posible tb pasarle en el xml los datos de la tarjeta y demas. porq esa es la manera q quieren aki en la empresa : te cito un parrafo del manual.
Cita:
A continuación se detalla cómo generar el mensaje de petición de pago en el caso de que el Comercio sea el encargado de pedir los datos de la tarjeta al comprador:

Para enviar la operación al TPV, el Comercio debe efectuar una petición de tipo POST a la URL donde el TPV recibe las operaciones del Pago 3Dsecure / por Referencia:

https://w3.grupobbva.com/TLPV/tlpv/T...ModeloServidor

En dicha petición se debe incluir un parámetro llamado peticion cuyo contenido deberá ser un mensaje conteniendo todos los datos de la operación en formato XML. El contenido y el formato de dicho mensaje se describe a continuación.
Cita:
-campo modelopago -> identificador del modelo de pago del comercio (pago 3Dsecure ó por Referencia)- campo idterminal -> identificador del terminal al que está asociado el comercio en el TPV
- campo idcomercio -> identificador del comercio en el TPV
- campo idtransaccion -> nº de transacción que identifica la operación
- campo mediopago -> identificador del medio de pago del comercio
- campo soporte -> identificador del soporte de pago (tarjeta)
- campo canal -> identificador del canal de pago (internet)
- campo moneda -> código ISO de la moneda en la que se realiza la operación
- campo importe -> importe (con decimales) de la operación
- campo numtarjeta -> número de tarjeta (sólo 3Dsecure)
- campo fechacaducidad -> fecha de caducidad de la tarjeta (sólo 3Dsecure)
- campo cvv2 -> fecha de caducidad de la tarjeta (sólo 3Dsecure y si el comercio está configurado para enviar este campo y se sabe su valor)
- campo urlcomercio -> URL donde el Comercio quiera recibir los datos de la respuesta del TPV a la operación
- campo idioma -> código ISO del idioma seleccionado por el comercio (se trata de un campo opcional)
- campo pais -> código ISO del pais seleccionado por el comercio (se trata de un campo opcional)
- campo urlredir -> campo opcional en el que el Comercio puede indicar la URL del Comercio donde quiera que el TPV redireccione al comprador cuando se finalize un pago
- campo localizador -> campo opcional que puede utilizar el comercio para enviar cualquier información que considere de utilidad; por ejemplo un nº de referencia que identifique su transacción si este campo es enviado por el comercio, será presentado por el TPV en la página de respuesta a la operación de pago solicitada
- campo firma -> firma de la operación en base a los datos de la misma
Como pides tu los datos de la tarjeta ??? .bueno gracias por tu tiempo , te estoy muy agradecido. byee
  #37 (permalink)  
Antiguo 08/06/2008, 06:52
 
Fecha de Ingreso: junio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Tpv Bbva

Hola a todos creo es un poco tarde para responder pero acabo de meterme en este problema

Cuando aun estas en el proceso de pago si todo sale bien, la URL que tienes como url Respuesta le llega una peticón GET por parte del tpv bbv y es ahi cuando tienes que manipularla, si tiene error o no.

Saludos.
  #38 (permalink)  
Antiguo 18/06/2008, 21:18
 
Fecha de Ingreso: junio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Tpv Bbva

Hola gente, me presento ante todo mi nombre es Alejandro vivo en bs. as. Argentina, siempre ando mirando los post del foro y no dejo de aprender cada vez q los visito, esta ves me encuentro con una graaaaave duda, nose si preocuparme, resulta que me tire a hacer mi primera tienda bien dinamica! no saben que LIIIINDA q quedo, la verdad q me asombro de mi mismo, bueno sin hacer tantos rodeos, vamos a la gran cuestion, en esta tiendita que arme tengo el TPV de BBVA, el tema es que no entiendo naaaada, pero absolutamente nada de los tutoriales que da el Banco, yo realice toda la tienda en PHP, me podrian ayudar? en como empiezo? nose para donde rajar....! tengo la confirmacion de compra del user de la web una vez ahi, me gustaria darle la opcion de pagar con tarjeta de credito en el mail que le llega como confirmacion de la compra realizada, como envio los datos a mi TPV, que datos, etc, etc... si alguno me podria ayudar tendria que ser una explicacion bieeeeen, pero bieeeen de 0, desde muchisimas pero muchisimas gracias a todos!

SAludos

Ale

Se entendio algo?? espero q si
  #39 (permalink)  
Antiguo 20/06/2008, 08:55
 
Fecha de Ingreso: junio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Tpv Bbva

Bueno gente... nadie contesta debe ser porque el tema es medio viejito ya, les cuento por si alguno me puede responder, ya implemente algo, una vez realizado el pedido puedo pagar y abonando en el TPV el tema es que no me trae el Total en el TPV alguno se le ocurre algo de q me puede estar pasando?? saludos

Ale
  #40 (permalink)  
Antiguo 10/03/2009, 14:27
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 21 años
Puntos: 3
Respuesta: Tpv Bbva

Vuelvo a abrir este tema porque estoy teniendo problemas con la firma o con la desofuscación de la palabra clave.

Estoy usando la función desobfuscate que se ha publicado en este tema y nada, y la firma con SHA, después he probado con lo que vienen en el manual del banco y tampoco, aqui pongo el codigo:

Código PHP:
$pal_sec_ofuscada "**********";
$clave_xor "***********";

$cad1_0 "0";
$cad2_0 "00";
$cad3_0 "000";
$cad4_0 "0000";
$cad5_0 "00000";
$cad6_0 "000000";
$cad7_0 "0000000";
$cad8_0 "00000000";
$pal_sec "";

$valor rand (099);
$id_trans date("mdHis").$valor;
$localizador="1234567890";
$importe "22.30";
$trozos explode (";"$pal_sec_ofuscada);
$tope count($trozos);

for (
$i=0$i<$tope $i++)
{
    
$res "";
    
$pal_sec_ofus_bytes[$i] = decbin(hexdec($trozos[$i]));    
    if (
strlen($pal_sec_ofus_bytes[$i]) == 7){ $pal_sec_ofus_bytes[$i] = $cad1_0.$pal_sec_ofus_bytes[$i]; }    
    if (
strlen($pal_sec_ofus_bytes[$i]) == 6){ $pal_sec_ofus_bytes[$i] = $cad2_0.$pal_sec_ofus_bytes[$i]; }
    if (
strlen($pal_sec_ofus_bytes[$i]) == 5){ $pal_sec_ofus_bytes[$i] = $cad3_0.$pal_sec_ofus_bytes[$i]; }
    if (
strlen($pal_sec_ofus_bytes[$i]) == 4){ $pal_sec_ofus_bytes[$i] = $cad4_0.$pal_sec_ofus_bytes[$i]; }
    if (
strlen($pal_sec_ofus_bytes[$i]) == 3){ $pal_sec_ofus_bytes[$i] = $cad5_0.$pal_sec_ofus_bytes[$i]; }
    if (
strlen($pal_sec_ofus_bytes[$i]) == 2){ $pal_sec_ofus_bytes[$i] = $cad6_0.$pal_sec_ofus_bytes[$i]; }
    if (
strlen($pal_sec_ofus_bytes[$i]) == 1){ $pal_sec_ofus_bytes[$i] = $cad7_0.$pal_sec_ofus_bytes[$i]; }
    
$pal_sec_xor_bytes[$i] = decbin(ord($clave_xor[$i]));
    if (
strlen($pal_sec_xor_bytes[$i]) == 7){ $pal_sec_xor_bytes[$i] = $cad1_0.$pal_sec_xor_bytes[$i]; }
    if (
strlen($pal_sec_xor_bytes[$i]) == 6){ $pal_sec_xor_bytes[$i] = $cad2_0.$pal_sec_xor_bytes[$i]; }
    if (
strlen($pal_sec_xor_bytes[$i]) == 5){ $pal_sec_xor_bytes[$i] = $cad3_0.$pal_sec_xor_bytes[$i]; }
    if (
strlen($pal_sec_xor_bytes[$i]) == 4){ $pal_sec_xor_bytes[$i] = $cad4_0.$pal_sec_xor_bytes[$i]; }
    if (
strlen($pal_sec_xor_bytes[$i]) == 3){ $pal_sec_xor_bytes[$i] = $cad5_0.$pal_sec_xor_bytes[$i]; }
    if (
strlen($pal_sec_xor_bytes[$i]) == 2){ $pal_sec_xor_bytes[$i] = $cad6_0.$pal_sec_xor_bytes[$i]; }
    if (
strlen($pal_sec_xor_bytes[$i]) == 1){ $pal_sec_xor_bytes[$i] = $cad7_0.$pal_sec_xor_bytes[$i]; }
    for (
$j=0$j<8$j++)
    {
        (string)
$res .= (int)$pal_sec_ofus_bytes[$i][$j] ^ (int)$pal_sec_xor_bytes[$i][$j];
    }
    
$xor[$i] = $res;
    
$pal_sec .= chr(bindec($xor[$i]));
}


// sha1 algorithm
class SHA 
    var 
$A$B$C$D$E;
    var 
$ta$tb$tc$td$te;
    var 
$K0_19$K20_39$K40_59$K60_79

    var 
$buffer
    var 
$buffsize
    var 
$totalsize

    function 
SHA () { 
        
$this->init(); 
    } 

    function 
init () {
        
$this->0x6745 << 16 0x2301
        
$this->0xefcd << 16 0xab89
        
$this->0x98ba << 16 0xdcfe
        
$this->0x1032 << 16 0x5476
        
$this->0xc3d2 << 16 0xe1f0
        
$this->ta $this->A
        
$this->tb $this->B
        
$this->tc $this->C
        
$this->td $this->D
        
$this->te $this->E
        
$this->K0_19 0x5a82 << 16 0x7999
        
$this->K20_39 0x6ed9 << 16 0xeba1
        
$this->K40_59 0x8f1b << 16 0xbcdc
        
$this->K60_79 0xca62 << 16 0xc1d6
        
$this->buffer = array(); 
        
$this->buffsize 0
        
$this->totalsize 0
    } 

    function 
bytes_to_words$block ) { 
        
$nblk = array(); 
        for( 
$i=0$i<16; ++$i) { 
            
$index $i 4
            
$nblk[$i] = 0
            
$nblk[$i] |= ($block[$index] & 0xff) << 24
            
$nblk[$i] |= ($block[$index+1] & 0xff) << 16
            
$nblk[$i] |= ($block[$index+2] & 0xff) << 8
            
$nblk[$i] |= ($block[$index+3] & 0xff); 
        } 
        return 
$nblk
    } 

    function 
pad_block$block$size ) {
        
$blksize sizeof$block ); 
        
$bits $size 8
        
$newblock $block
        
$newblock[] = 0x80;
        while((
sizeof($newblock) % 64) != 56) { 
            
$newblock[] = 0
        }
        for (
$i=0$i<8; ++$i) { 
            
$newblock[] = ($i<4) ? : ($bits >> ((7-$i)*8)) & 0xff
        } 
        return 
$newblock
    } 

    function 
circ_shl$num$amt ) { 
        
$leftmask 0xffff | (0xffff << 16); 
        
$leftmask <<= 32 $amt
        
$rightmask 0xffff | (0xffff << 16); 
        
$rightmask <<= $amt
        
$rightmask = ~$rightmask
        
$remains $num $leftmask
        
$remains >>= 32 $amt
        
$remains &= $rightmask
        
$res = ($num << $amt) | $remains
        return 
$res
    } 
    function 
f0_19$x$y$z ) { 
        return (
$x $y) | (~$x $z); 
    } 
    function 
f20_39$x$y$z ) { 
        return (
$x $y $z); 
    } 

    function 
f40_59$x$y$z ) { 
        return (
$x $y) | ($x $z) | ($y $z); 
    } 

    function 
f60_79$x$y$z ) { 
        return 
$this->f20_39$x$y$z ); 
    } 

    function 
expand_block$block ) { 
        
$nblk $block
        for( 
$i=16$i<80; ++$i ) { 
                                     
$nblk[$i] = $this->circ_sh l$nblk[$i-3] ^ $nblk[$i-8] ^ $nblk[$i-
                                     
14] ^ $nblk[$i-16], 1);
        } 
        return 
$nblk
    } 

    function 
print_bytes$bytes ) { 
        
$len sizeof$bytes ); 
        for( 
$i=0$i<$len; ++$i) { 
            
$str[] = sprintf(  "%02x"$bytes[$i] ); 
        } 
        print( 
join(  ", "$str ) .  "\n" ); 
    } 

    function 
wordstr$word ) { 
        return 
sprintf(  
             
"%04x%04x", ($word >> 16) & 0xffff$word 0xffff 
            
); 
    } 

    function 
print_words$words ) { 
        
$len sizeof$words ); 
        for( 
$i=0$i<$len; ++$i) { 
            
$str[] = $this->wordstr$words[$i] ); 
        } 
        print( 
join(  ", "$str ) .  "\n" ); 
    } 

    function 
hash_to_string$hash ) { 
        
$len sizeof$hash );
        for (
$i=0$i<$len; ++$i) { 
            
$astr .= $this->wordstr$hash[$i] ); 
        } 
        return 
$astr
    } 

    function 
add$a$b ) { 
        
$ma = ($a >> 16) & 0xffff
        
$la = ($a) & 0xffff
        
$mb = ($b >> 16) & 0xffff
        
$lb = ($b) & 0xffff
        
$ls $la $lb
         
// Carry 
        
if ($ls 0xffff) { 
            
$ma += 1
            
$ls &= 0xffff
        } 
        
$ms $ma $mb
        
$ms &= 0xffff
        
$result = ($ms << 16) | $ls
        return 
$result
    } 

    function 
process_block$blk ) { 
        
$blk $this->expand_block$blk ); 
        for( 
$i=0$i<80; ++$i ) { 
            
$temp $this->circ_shl$this->ta); 
            if (
$i<20) { 
                
$f $this->f0_19$this->tb$this->tc$this->td ); 
                
$k $this->K0_19
            } 
            elseif (
$i<40) { 
                
$f $this->f20_39$this->tb$this->tc$this->td ); 
                
$k $this->K20_39
            } 
            elseif (
$i<60) { 
                
$f $this->f40_59$this->tb$this->tc$this->td ); 
                
$k $this->K40_59
            } 
            else { 
                
$f $this->f60_79$this->tb$this->tc$this->td ); 
                
$k $this->K60_79
            } 
            
$temp $this->add$temp$f ); 
            
$temp $this->add$temp$this->te ); 
            
$temp $this->add$temp$blk[$i] ); 
            
$temp $this->add$temp$k ); 
            
$this->te $this->td
            
$this->td $this->tc
            
$this->tc $this->circ_shl$this->tb30 ); 
            
$this->tb $this->ta
            
$this->ta $temp
        } 
        
$this->$this->add$this->A$this->ta ); 
        
$this->$this->add$this->B$this->tb ); 
        
$this->$this->add$this->C$this->tc ); 
        
$this->$this->add$this->D$this->td ); 
        
$this->$this->add$this->E$this->te ); 
    } 

    function 
update $bytes ) { 
        
$length sizeof$bytes ); 
        
$index 0
        while ((
$length $index) + $this->buffsize >= 64) { 
            for( 
$i=$this->buffsize$i<64; ++$i) { 
                
$this->buffer[$i] = $bytes[$index $i $this->buffsize]; 
            } 
            
$this->process_block$this->bytes_to_words$this->buffer ) ); 
            
$index += 64
            
$this->buffsize 0
        } 
        
$remaining $length $index
        for( 
$i=0$i<$remaining; ++$i) { 
            
$this->buffer[$this->buffisze $i] = $bytes[$index $i]; 
        } 
        
$this->buffsize += $remaining
        
$this->totalsize += $length
    } 

    function final() { 
        for( 
$i=0$i<$this->buffsize; ++$i) { 
            
$last_block[$i] = $this->buffer[$i]; 
        } 
        
$this->buffsize 0
        
$last_block $this->pad_block$last_block$this->totalsize ); 
        
$index 0
        
$length sizeof$last_block ); 
        while( 
$index $length 
        {
            
$block = array(); 
            for( 
$i=0$i<64; ++$i) { 
                
$block[$i] = $last_block[$i $index]; 
            } 
            
$this->process_block$this->bytes_to_words$block ) ); 
            
$index += 64
        } 

        
$result[0] = $this->A
        
$result[1] = $this->B
        
$result[2] = $this->C
        
$result[3] = $this->D
        
$result[4] = $this->E
        return 
$result
    } 
    function 
hash_bytes$bytes ) { 
        
$this->init(); 
        
$this->update$bytes ); 
        return 
$this->final(); 
    } 
    function 
hash_string$str ) { 
        
$len strlen$str ); 
        for(
$i=0$i<$len; ++$i) { 
            
$bytes[] = ord$str[$i] ) & 0xff
        } 
        return 
$this->hash_bytes$bytes ); 
    } 
}

$sha = new SHA;
$datosfirma "*****"."******".$id_trans."22.30".$res;
$digest1 $sha->hash_string($message);
$firma strtoupper ($sha->hash_to_string($digest1)); 
¿Sabéis cual puede ser el error?

Muchas Gracias
  #41 (permalink)  
Antiguo 24/12/2009, 04:31
 
Fecha de Ingreso: marzo-2005
Mensajes: 276
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Re: Tpv Bbva

Cita:
Iniciado por dex307 Ver Mensaje
Ya está jerkan, ahora si que si.
Era eso, guardando los datos en un fichero de texto y no ejecutando yo ese script, los datos llegan y se almacenan.

No puedes llegar a imaginarte lo agradecido que te estoy.
Bueno, sé q hace mucho que se escribió este post, pero para futuros desarrolladores os diré que yo tenía exactamente el mismo problema, hice una prueba sencilla de subirlo de local a real y ... voilà! funcionaba!!!

La pista en el manual de BBVA:

Para notificar al comercio, lo que hace el TPV es establecer una conexión http con el servidor donde esté alojada la web del comercio e invocar la página de notificación pasándole un parámetro (denominado peticion) con los datos de la respuesta al pago. Como consecuencia, el resultado de dicha página no es visible en el navegador del comercio.

Lo q me hizo preguntarme si el tpv podría conectarse con mi urlcomercio de local, por lo visto (y obviamente), la respuesta es no.
  #42 (permalink)  
Antiguo 25/04/2012, 09:33
 
Fecha de Ingreso: abril-2012
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
De acuerdo Respuesta: Tpv Bbva

Al parecer el que la url tenga parámetros no es un problema, aunque hay que enviarla escapeada:

Código PHP:
$xml.= '    <urlcomercio>'.urlencode($notification_url).'</urlcomercio>'

saluts
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.
Tema Cerrado




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