Ciao ragazzi, sto creando un file in grado di intercettare le notifiche IPN di paypal e vorrei una delucidazione a riguardo. In particolare ho dei problemi per quanto concerne l'aprire una socket per comunicare con paypal,
Codice:
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.sandbox.paypal.com:443\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: Close\r\n\r\n";
$fp = fsockopen("ssl://www.sandbox.paypal.com", 443, $errno, $errstr, 30);
if(!$fp){
return FALSE;
}else{
fputs($fp, $header . $req);
while(!feof($fp)){
$res = fgets($fp, 1024);
if(strcmp($res, "VERIFIED") == 0){
fclose($fp);
return TRUE;
}else if(strcmp($res, "INVALID") == 0){
fclose($fp);
return FALSE;
}
}
// .....eccetera
e questo è il pezzetto di script che non funziona, l'errore che mi da è il seguente :"
HTTP/1.0 500 Server closed connection without sending any data back
Date: Sun, 10 Nov 2013 21:57:34 GMT
Server: Apache
Content-Type: text/plain
Server closed connection without sending any data back at /usr/local/lib/perl5/site_perl/5.8.8/Net/HTTP/Methods.pm line 373.
"
In questi giorni mi sono informato un po' di qua e di la per la rete, senza trovare una risposta efficace purtroppo, ed eccomi qui che chiedo aiuto "direttamente".
Ho attivato la whitelist (poichè da quanto ho capito senza di questa non posso utilizzare la fsockopen()) e, controllando nella lista dei server "supportati", ho visto che c'è anche - https://*.paypal.com - dunque non mi spiego come mai non funzioni, se qualche buon'anima è così gentile da darmi una mano ne sarei davvero felice!
Vincenzo