/** * Validates the IPN request returns the IPN data on success * * @return array $ipnMessage */ public function verifyIpn() { $listener = new Listener(); $verifier = new CurlVerifier(); $ipnMessage = Message::createFromGlobals(); // uses php://input $verifier->setIpnMessage($ipnMessage); $verifier->forceSSLv3(FALSE); $verifier->setEnvironment('production'); // can either be sandbox or production $listener->setVerifier($verifier); // If IPN does not validate if (!$listener->processIpn()) { throw new InvalidIpnException($listener->getReport()); } // On verified IPN return $ipnMessage; }