/**
  * Listens for and stores PayPal IPN requests.
  *
  * @return IpnOrder
  * @throws InvalidIpnException
  * @throws UnexpectedResponseBodyException
  * @throws UnexpectedResponseStatusException
  */
 public function getOrder()
 {
     $request = $this->getRequestHandler();
     $listener = new PayPalListener($request);
     $listener->setMode($this->getEnvironment());
     if ($listener->verifyIpn()) {
         return $this->store($request->getData());
     } else {
         throw new InvalidIpnException("PayPal as responded with INVALID");
     }
 }