I'm improving a PayPal IPN listener. I've read the specs and there are still a few open questions. As we all know, if you receive a notification, you have to connect to PayPal on a second channel, send them the received data, and PayPal will answer with either VERIFIED or INVALID. In certain cases, PayPal resends a notification until it receives an answer from us. And PayPal has a debugging page called "IPN History".
I had at least one occasion where I received INVALID, and the "IPN History" showed the normal status "sent".
Question 1: Is it correct that PayPal doesn't check whether I connect to them on the second channel to decide whether a message was correctly sent?
Q2: I assume that PayPal looks solely at the http status header (e.g. "200 OK") it receives from us to decide what status to show in the "IPN History". Is this correct?
Q3: I also assume that PayPal looks solely at the http status header to decide whether it has to resend a message. Is that correct?
That PayPal payment that I received INVALID now shows up in PayPal as a normal payment. But there was no additional notification at a later moment.
Q4: I assume this behavior was a internal PayPal problem, and the proper way to do this is to tell PayPal there was an error so that it sends another notification 5 minutes later. Is that correct?
Q5: If so, what http status header do I have to send back to PayPal if I receive INVALID to make sure that PayPal resends the notification later?
Thanks!