I'm trying to write a custom listener for PayPal Instant Payment Notifications. I've defined a page callback in hook_menu as

$items['paypal-listener'] = array(
    'title' => 'PayPal IPN Listener',
    'description' => 'Simple test for receiving PayPal notifications',
    'page callback' => 'ipn_test',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,

and my custom callback is

function ipn_test() {
    watchdog('paypal_ipn', print_r($_POST, TRUE));

but it's always empty. When testing with postman the response is always

array(0) {}

Is there something I'm missing? Something that empties out the $_POST array?

The $_POST from PayPal is Content-Type: application/x-www-form-urlencoded in case that matters.

I have already checked this question, this question and this one but none seem to have the answer to why the data is gone.

This doesn't work either

$data = file_get_contents("php://input");
$data = json_decode($data, TRUE);


OK, it seems as if the chrome app postman can't send POST varibale to a local server properly. I created a simple php script with just var_dump($_POST) and while it works fine on an online server, it is empty on my local server.

closed as off-topic by kiamlaluno Apr 15 '18 at 9:50

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question was caused by a problem that can no longer be reproduced, was solved by a cache clear, or was a simple typographical error. While similar questions may be on-topic here, this one was resolved in a manner unlikely to help future readers." – kiamlaluno
If this question can be reworded to fit the rules in the help center, please edit the question.


There must have been some kind of bug or I set it up wrong because the next day it started working fine.

Not the answer you're looking for? Browse other questions tagged or ask your own question.