Hola Jabixo,
podrías usar la API de PayPal para saber si un pago fue existoso o no.
Acá está documentada: https://developer.paypal.com/docs/classic/api/
y la que tendrías que usar es: https://developer.paypal.com/docs/classic/api/adaptive-payments/PaymentDetails_API_Operation/ validando que el estado sea COMPLETED.
Esto implica que tenés que guardar los datos del intento de pago para validarlo contra un usuario registrado, o mentener en una sesión los valores para habiltiar la descarag si no tenés usuarios registrados (también tendrías que proveer otro métido si el usuario no se registra porque la sesión expirará en algún momento o se pierde si se cierra el navegador)
Tené cuidado con los mecanismo de cancelación de pagos que PayPal ofrece: podrían pagarte, descargar el archivo y luego cancelar la operación. Sin embargo las opciones de cancelación de operaciones no están disponibles para todas las cuentas de PayPal.
Saludos!