I just ran into the same problem as the implementation of the IPN listener in Play2 (Scala).
Note. The invalid type of your request back to Paypal is that it complains about it, you return its response to the original Paypal IPN request that it provides to your listener.
I returned play.api.mvc.SimpleResult.Ok () (which maps to Http 200), but received the message "IPN not detecting Content-type".
After I scratched my head and made sure I was returning right away, I re-read the documentation and noticed: "Your listener returns the response" HTTP 200 " .
So instead I tried play.api.mvc.SimpleResult.Ok ("") and hey presto it will work!
Therefore, it seems that you should send some content (blank line) with a 200 response for the test service in order to be happy.
source share