no non ci siamo capiti:

paypal dovrebbe funzionare in questo modo (o almeno una volta funzionava così):

visibile all'utente:

submit del form --> sandbox di paypal dove l'utente paga --> redirect al campo hidden del form

non visibile all'utente:

sandbox paypal --> invio richiesta http al listener comunicato nei campi hidden del form

questo tradotto vuol dire che il redirect ti funziona perchè il tuo client (browser) l'indirizzo "localhost" lo vede (grazie alla ceppa, stai sullo stesso pc), ma quando il server paypal fa la richiesta http a "localhost/ipn.php" per inviare il feedback al listener, non vede il TUO di localhost ma vede il SUO di localhost, quindi stai dicendo al server di paypal di richicmare su se stesso http://localhost/etc/ipn.php

prova a mettere quella pagina ad una url pubblica e vedi come cambia la cosa