public function listen()
{
$message = $this->messageFactory->createMessage();
try {
$result = $this->verifier->verify($message);
if ($result) {
$eventName = self::IPN_VERIFIED_EVENT;
$event = new MessageVerifiedEvent($message);
} else {
$eventName = self::IPN_INVALID_EVENT;
$event = new MessageInvalidEvent($message);
}
} catch (\UnexpectedValueException $e) {
$eventName = self::IPN_VERIFICATION_FAILURE_EVENT;
$event = new MessageVerificationFailureEvent($message, $e->getMessage());
} catch (ServiceException $e) {
$eventName = self::IPN_VERIFICATION_FAILURE_EVENT;
$event = new MessageVerificationFailureEvent($message, $e->getMessage());
}
$this->eventDispatcher->dispatch($eventName, $event);
}