Salve a tutti, seguendo la guida del sito ho provato a implementare un semplice script php per creare il listener php dell'IPN di paypal... ovviamente con scarsi risultati.
codice:
<?php
$posted_data = print_r($_POST,true);
file_put_contents('IPN_data.txt',$posted_data);
    // intercetta le variabili IPN inviate da PayPal
    $req = 'cmd=_notify-validate';
     
    // legge l'intero contenuto dell'array POST
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }
 
    // intestazione, prepara le variabili PayPal per la validazione
    $header  = "POST /cgi-bin/webscr HTTP/1.1\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
 
    // apre una connessione al socket PayPal 
    $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
 
    // converte le variabili inviate da IPN in variabili locali
    $reflink = $_POST['custom'];
    $refnum  = $_POST['item_number'];
    $receiver_email = $_POST['receiver_email'];
    
 
    // verifica l'apertura della connessione al socket
    if (!$fp) {
 
        // se la connessione non avviene l'esecuzione dello script viene bloccata
        exit();
 
        // in alternativa è per esempio possibile inviare un'email al venditore
    } else {
 
        // elaborazione delle informazioni
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
 
            // azioni in caso di risposta positiva da parte di PayPal
            if (strcmp ($res, "VERIFIED") == 0) {
 
                 // controllo sull'email del venditore
                 if($receiver_email == "aguiari.diego-facilitator@gmail.com"){
                     
            // connessione a MySQL tramite istanza
                    $mysqli = new mysqli("localhost", "username", "", "my_database");
                   
                    // controllo sull'identificatore della transazione
                    
                        // query per l'inserimento dei dati
                        $result = $mysqli->query("INSERT INTO utenti (reflink, numref) VALUES ('$reflink', '$refnum')");


                       
                    
 
                    // liberazione della memoria dal risultato della query
                   
 
                    // chiusura della connessione
                   $mysqli->close();
                }
 
             }
 
            // azione in caso di risposta negativa da parte di PayPal else 
            if (strcmp ($res, "INVALID") == 0) {
                // è possibile eseguire qualsiasi operazione
        // per esempio compilare un log degli errori o inviare una mail al venditore
            }
 
        }
 
        // chiusura della sorgente di dati
        fclose($fp);
    }
    ?>
Cosa c'è di sbagliato? Son quasi sicuro fallisca il controllo
codice:
if (strcmp ($res, "VERIFIED") == 0) {
E' tutto il giorno che ci sto impazzendo

Grazie in anticipo!