How / where are you receiving the data? Shows us your HTML.
I recently had trouble receiving POST data from PayPal. However, the IPN.php still works. You can do some debugging on your IPN/return page.
Add this to your PayPal file to see exactly what you are receiving. If the POST section is empty, that will be your issue and you might need to work with GET data instead.
Option 1) Dump everything received into a file
function test_file_dump2( $msg ) {
$filename = dirname(__FILE__).'-IPN-dump.log';
$f = fopen( $filename, 'a' );
fwrite( $f, var_export( $msg, true ) . "\n" );
fclose( $f );
}
test_file_dump2($_POST);
test_file_dump2($_GET);
Option 2) Log all errors to in this directory
ini_set('error_reporting', E_ALL); // everything. Change to E_ALL & ~E_NOTICE); to remove notices
error_reporting(E_ALL );
ini_set('html_errors',TRUE);
ini_set('log_errors', TRUE);
ini_set('display_errors',TRUE);
ini_set('error_log', dirname(__FILE__) . '/-errors-ipn.log');
Option 3) if in success.php or a page you can see
echo "<pre> GET contents<br><br>"; print_r($_GET); echo "</pre>";
echo "<pre> POST contents<br><br>"; print_r($_POST); echo "</pre>";