Foros del Web » Programando para Internet » PHP »

Paypal IPN siempre me da INVALID

Estas en el tema de Paypal IPN siempre me da INVALID en el foro de PHP en Foros del Web. Hola a todos ando necesitada de ayuda con paypal IPN, vereis, ando tratando de hacer una sencilla pagina de esas que son una carta de ...
  #1 (permalink)  
Antiguo 23/02/2016, 18:44
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 8 meses
Puntos: 56
Paypal IPN siempre me da INVALID

Hola a todos
ando necesitada de ayuda con paypal IPN, vereis, ando tratando de hacer una sencilla pagina de esas que son una carta de ventas con un boton de paypal y cuando el visitante paga se le manda a otra pagina donde descarga el producto comprado. Ok, tengo las paginas ya creadas, con la carta de ventas y el boton paypal (esta parte en principio creo que no tiene ningun misterio). Mi pesadilla esta en la verificacion del pago de paypal. Llevo desde ayer probando codigos (de webs de por ahi, de stackoverflow, del propio paypal, potpurris mios...) y no doy con ello, SIEMPRE me da INVALID tanto cuando lo testeo desde el Instant Payment Notification (IPN) Simulator (https://developer.paypal.com/developer/ipnSimulator/) como en real (haciendo una compra de 1$).

Os pego el ultimo codigo que he probado, que una vez me dio un valido... pero no se si fue un falso positivo o que, porque despues pasó a invalid de nuevo.

Código PHP:
<?php
$raw_post_data 
file_get_contents('php://input');
$raw_post_array explode('&'$raw_post_data);

$req 'cmd=_notify-validate&';    


$req .= $raw_post_data;
 
// Step 2: POST IPN data back to PayPal to validate
$ch curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
//$ch = curl_init('https://www.paypal.com/cgi-bin/webscr');
curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
curl_setopt($chCURLOPT_POSTFIELDS$req);
curl_setopt($chCURLOPT_SSL_VERIFYPEER1);
curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_FORBID_REUSE1);
curl_setopt($chCURLOPT_HTTPHEADER, array('Connection: Close'));
// In wamp-like environments that do not come bundled with root authority certificates,
// please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set 
// the directory path of the certificate as shown below:
curl_setopt($chCURLOPT_CAINFOdirname(__FILE__) . '/cacert.pem');
if( !(
$res curl_exec($ch)) ) {
    
file_put_contents('ipn.log'curl_error($ch) , FILE_APPEND);
    
curl_close($ch);
    exit;
} else {
  
$text $raw_post_data."\n";
  
$text .= $req."\n";
  
$text .= $res."\n\n";
  
file_put_contents('ipn.log'$text FILE_APPEND);
  
curl_close($ch);

}   

echo 
$text;
?>

Ahora, que he probado? pues como vi que tenia problmas con la codificacion de la respuesta (se me codificaban lso espacios como + en algunas partes en lugar de %20 y cosas asi) , despues de dar muchas vueltas y probar unas cuantas funcioes de php (tipo htmlentites, urlencode etc etc etc) sin que me funcionara nada, se me ocurrió que para que ###### iba a procesar el mensaje, si lo que quiere paypal es que se lo devuelva IGUAL que me lo ha mandado, no? pues pensé que lo mejor es coger el raw_post_data , pegarle el primer parametro de la respuesta (cmd=_notify-validate) seguido de & para concatenerlo al resto y ya está.

Y de esa forma, como digo, la prmera vez me dio VALID (que me parecio raro porque debia ser VERIFIED pero pensé que igual la documentacion habia quedado obsoleta. ademas tenia como unos simbolitos raros delante y detras) pero a la siguiente en el log me salio un monton de codigo HTML dentro del cual ponia "page not found" y despues ya no he conseguido que de otra cosa que INVALID, pero el caso es que comparo las cadenas (siempre en modo de test y mandando la verificacion a sandbox.paypal.com, pues la pido desde el testeador de ipn) y son iguales, y no se por qué no lo da por bueno.

El caso es que leyendo por ahi (en stackoverflow) he visto algunas posibles causas y sus soluciones: que los botones de paypal no esten configurados en UTF-8, ok, los tenia en... no recuerdo, en otro y ya estan en UTF-8. No parece qu feura eso porque no tuvo ningun efecto visible. Tambien lei que podia ser de las credenciales, que si mi perfil de paypal esta en modo real no me va a funcionar el modo test , asi que se me ha ocurrido testear en real (con pagos bajos y de la cuetna de mi pareja a la mia). Y asi no solo me da INVALID si no que cuando logueo el post raw... esta vacio!!!!! y claro, lo devuelvo igual de vacío y no pasa.

Ah! tambien he probado (sin mucho convencimiento, la verdad) a ponerle el archivo este que dice el script, cacert.pem , por si era eso (la web está alojada en un compartido de banahosting), pero como me temía, como el que tiene tos y se rasca la barriga.

Y bueno, que ya estoy un poco desesperada, lo que se suponia un trabajo facil y rapido me esta comiendo la moral

A alguien le ha pasado esto? Por que en real el postraw me llega vacío? Por qué si el postraw y lo que develvo es igual (como lo logueo, lo he comparado con herramientas de comparacion de codigo y me da que es exacto) me da como invalido?

Gracias a todos
__________________
Un saludo! :-)
Quiero ser el primero
  #2 (permalink)  
Antiguo 24/02/2016, 15:09
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 8 meses
Puntos: 56
Respuesta: Paypal IPN siempre me da INVALID

en serio nadie ha probado a montar una pagina de venta sin cms con paypal IPN?

avance del dia: descubrí que en mi paypal apuntaba mal el IPN y lo cambié, no parecia afectar y pensé que igual necesitaba unas hora para efectuarse el cambio del todo. Hoy ni siquiera me hace el "handshake"... :(
__________________
Un saludo! :-)
Quiero ser el primero

Etiquetas: html, invalid, ipn, paypal, siempre
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 12:17.