public function processIPNAction($sBody)
    {
        $oMessage = $this->_getMessage($sBody);

        if (isset($oMessage->NotificationData)) {
            $oData = $oMessage->NotificationData;

            switch ($oMessage->NotificationType) {
                case 'OrderReferenceNotification':
                    return $this->_orderReferenceUpdate($oData);
                case 'PaymentAuthorize':
                    return $this->_paymentAuthorize($oData);
                case 'PaymentCapture':
                    return $this->_paymentCapture($oData);
                case 'PaymentRefund':
                    return $this->_paymentRefund($oData);
                default:
                    $this->logIPNResponse(Logger::ERROR, 'NotificationType in response not found', $oMessage);
                    return false;
            }
        }

        $this->logIPNResponse(Logger::ERROR, 'Invalid ipn message');
        return false;
    }