No recibo variable respuesta TPV BBVA en PHP
Hola:
Estoy instalando el tpv de bbva y todo va bien hasta que paso nuevamente de la pasarela de pagos a la web, algo debo de estar haciendo mal, pues ni con GET, ni con POST, ni REQUEST, la variable "peticion" no me llega con valor.
Adjunto parte del código por si alguien me puede decir que hago mal... Aquí está con GET, pero con POST me daba lo mismo, o sea, nada.
<code>
// Si viene del TPV, mostrar pagina exito o error
function getvalue( $xml , $tag ){
return eregi( "<tag>(.*)</tag>",$xml,$result) ? $result[1] : "";
}
if ($_GET['peticion']) {
$coderror = getvalue($_GET['peticion'], 'coderror');
if ($coderror != '000')
error("ERR_PAYMENT_NOT_PROCCESSED<br><br>ERR_PAYMENT_$coderror");
else header("Location: payment_done");
}</code>
Muchas gracias de antemano...
ivanargulo
Tengo el mismo error en 2 pagos distintos. ¿Conseguiste solucionarlo? Si así es, agradeceríamos mucho tu respuesta
wlawsonw
La respuesta de la BBVA viene como un GET.
Este es el codigo que utilizo:
<code>function GetElementByName ($xml, $start, $end) {
global $pos;
$startpos = strpos($xml, $start);
if ($startpos === false) {
return false;
}
$endpos = strpos($xml, $end);
$endpos = $endpos+strlen($end);
$pos = $endpos;
$endpos = $endpos-$startpos;
$endpos = $endpos - strlen($end);
$tag = substr ($xml, $startpos, $endpos);
$tag = substr ($tag, strlen($start));
return $tag;
}
$count = 0;
$pos = 0;
// Goes throw XML file and creates an array of all <XML_TAG> tags.
while ($node = GetElementByName($_GET[peticion], "<respago>", "</respago>")) {
$Nodes[$count] = $node;
$count++;
$_GET[peticion] = substr($_GET[peticion], $pos);
}
// Gets infomation from tag siblings.
for ($i=0; $i<$count; $i++) {
$estado = GetElementByName($Nodes[$i], "<estado>", "</estado>");
$idtrans = GetElementByName($Nodes[$i], "<idtransaccion>", "</idtransaccion>");
}</code>
Puedes sacar la infomacion de cualquier <tag> </tag> del XML.
Saludos,
miguelabal
Se agradecería mucho si compartieses la solucion
dex307
Tengo exactamente el mismo problema, alguien me puede ayudar??
c.roberto.u
<strong></strong>
Usuario desconocido
Buenos dias a todos;
A mi hace poco me paso lo mismo, me volvi medio loco intentando implementar el TPV de BBVA, al final lo saque, llamando 3094034 millones de veces y con el manual que te dan ofrecen.
Una recomendacion, si usais PHP 4 o anterior de servidor NO utiliceis la funcion SHA1() del PHP porque genera mal la clave, en cambio si esta PHP 5 o superior no hagais caso del manual e implementar la funcion SHA1() de PHP.
Pedir el manual, pese a lo anteriormente comentado... no esta mal... o eso, o cambiar de banco porque BBVA es lo peor del mundo.
Un saludo.
markshock
Como dice cHK ojito con la funcion SHA1() que no rula en PHP's inferiores al 5.
Tened en cuenta que os viene todo por $_GET ;)
Y tened en cuenta que quizás el error esta en el XML que generais al enviar los datos al BBVA quizas por eso, no os responde correctamente.
A mi esto me chusca bien, lo tengo implementado en un par de tiendas..
El BBVA es tosco, pero funciona, es muy cuadriculado, te da errores cuando los ha de dar, ahora bien la documentación es pésima, eso si.
RECEPCIÓN DE DATOS DEL ESTADO DE LA COMPRA
$peticion = $_GET["peticion"];
$cadenaxml = simplexml_load_string($peticion);
foreach($cadenaxml->respago as $mensaje){
$estado = $mensaje->estado.' ';
}
foreach($cadenaxml->respago as $mensaje){
$idtransaccion = $mensaje->idtransaccion.' ';
}
foreach($cadenaxml->respago as $mensaje){
$codigoerror = $mensaje->coderror.' ';
}
foreach($cadenaxml->respago as $mensaje){
$codigoerrordescripcion = $mensaje->deserror.' ';
}
foreach($cadenaxml->respago as $mensaje){
$codigoautorizacion = $mensaje->codautorizacion.' ';
}
foreach($cadenaxml->respago as $mensaje){
$localizador = $mensaje->localizador.' ';
}
foreach($cadenaxml->respago as $mensaje){
$idterminal = $mensaje->idterminal.' ';
}
foreach($cadenaxml->respago as $mensaje){
$idcomercio = $mensaje->idcomercio.' ';
}
foreach($cadenaxml->respago as $mensaje){
$moneda = $mensaje->moneda.' ';
}
foreach($cadenaxml->respago as $mensaje){
$importe = $mensaje->importe.' ';
}
foreach($cadenaxml->respago as $mensaje){
$firma = $mensaje->firma.' ';
}
Suerte!