A partir del 7 de octubre de 2013, se va a exigir que todas las peticiones entrantes tengan una cabecera “Host”, que cumplan con el protocolo HTTP 1.1. Si no actualizas tu IPN de paypal con esta nueva cabecera (y continuas usando HTTP 1.0) puede empezar a fallar con errores del tipo “HTTP/1.0 400 Bad Request”.

A continuación el código completo php del IPN nuevo (con las nuevas actualizaciones de Paypal):

// Inicio IPN
$req = 'cmd=_notify-validate'; 

foreach ($_POST as $key => $value) { 
    $value = urlencode(stripslashes($value)); 
    $req .= "&$key=$value"; 
} 

// Validación
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n"; /* NUEVO */ 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); 

if (!$fp) { 
    // Error al conectar con Paypal
} 
     
// Conexión establecida     
if ($fp) { 

    fputs ($fp, $header . $req); 
     
    while (!feof($fp)) { 

        $res = fgets ($fp, 1024);  
                 
        if (strcmp($res, "VERIFIED") == 0) { 
            // Pago correcto    
        } 
     
        if (strcmp ($res, "INVALID") == 0) { 
            // Pago incorrecto 
        } 

    } 

    fclose($fp);

}

Agradezco tu comentario 🤘