function onPaymentNotification(&$statuses)
 {
     $this->pluginParams();
     $configKey = $this->plugin_params->user_id . ':' . $this->plugin_params->project_id . ':' . $this->plugin_params->token;
     require_once dirname(__FILE__) . '/library/sofortLib.php';
     $notification = new SofortLib_Notification();
     $notification->getNotification();
     echo $notification->getTime();
     $transactionId = $notification->getTransactionId();
     //$return_url = HIKASHOP_LIVE.'index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id='.$order_id.$this->url_itemid;
     // fetch some information for the transaction id retrieved above
     $transactionData = new SofortLib_TransactionData($configKey);
     $transactionData->setTransaction($transactionId);
     $transactionData->sendRequest();
     $method_id = $transactionData->getUserVariable(1);
     $this->pluginParams($method_id);
     $this->payment_params =& $this->plugin_params;
     global $Itemid;
     $this->url_itemid = empty($Itemid) ? '' : '&Itemid=' . $Itemid;
     $cancel_url = HIKASHOP_LIVE . 'index.php?option=com_hikashop&ctrl=order&task=cancel_order' . $this->url_itemid;
     if (empty($this->payment_params)) {
         $this->redirect($cancel_url);
         return false;
     }
     $order_id = $transactionData->getUserVariable(0);
     echo $order_id;
     $dbOrder = $this->getOrder($order_id);
     if (empty($dbOrder)) {
         $this->redirect_url = $cancel_url;
         return false;
     }
     $history = new stdClass();
     $history->history_data = 'TransactionId: ' . $transactionId;
     $history->notified = 0;
     if ($transactionData->getStatus() == 'pending') {
         $email = new stdClass();
         $email->subject = JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER', 'Sofort', $transactionData->getStatus(), $dbOrder->order_number);
         $email->body = str_replace('<br/>', "\r\n", JText::sprintf('PAYMENT_NOTIFICATION_STATUS', 'Sofort', $transactionData->getStatus())) . "\r\n\r\n" . $transactionData->getStatusReason();
         $action = false;
         $order_status = $this->payment_params->pending_status;
         $this->modifyOrder($order_id, $order_status, $history, $email);
         return false;
     }
     if ($transactionData->getStatus() != 'received') {
         $order_status = 'created';
         $email = new stdClass();
         $email->body = str_replace('<br/>', "\r\n", JText::sprintf('PAYMENT_NOTIFICATION_STATUS', 'Sofort', $order_status)) . ' ' . JText::_('STATUS_NOT_CHANGED') . "\r\n\r\n" . $transactionData->getStatusReason();
         $email->subject = JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER', 'Sofort', $order_status, $dbOrder->order_number);
         $this->modifyOrder($order_id, $order_status, $history, $email);
         return false;
     }
     $order_status = $this->payment_params->verified_status;
     $history->history_data = 'TransactionId: ' . $transactionId;
     $history->notified = 1;
     $email = new stdClass();
     $email->subject = JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER', 'Sofort', $transactionData->getStatus(), $dbOrder->order_number);
     $email->body = str_replace('<br/>', "\r\n", JText::sprintf('PAYMENT_NOTIFICATION_STATUS', 'Sofort', $order_status)) . ' ' . JText::sprintf('ORDER_STATUS_CHANGED', $order_status) . "\r\n\r\n" . $transactionData->getStatusReason();
     $this->modifyOrder($order_id, $order_status, $history, $email);
     return true;
 }
    $time = strftime('%Y-%m-%d %H:%M:%S', strtotime($time));
    $statusReason = $SofortLib_ClassicNotification->getStatusReason();
    $status = $SofortLib_ClassicNotification->getStatus();
    $xOrderId = $SofortLib_ClassicNotification->getUserVariable(0);
    $xCustomerId = $SofortLib_ClassicNotification->getUserVariable(1);
    $paymentMethod = 'ideal';
} elseif ($_GET['action'] == 'su') {
    // SU-classic
} elseif ($_GET['action'] == 'multipay' || !$_GET['action']) {
    // Multipay
    $SofortLib_Notification = new SofortLib_Notification();
    $transactionId = $SofortLib_Notification->getNotification();
    if (empty($transactionId)) {
        exit('TransID empty!');
    }
    $time = $SofortLib_Notification->getTime();
    $time = strftime('%Y-%m-%d %H:%M:%S', strtotime($time));
    $SofortLib_TransactionData = new SofortLib_TransactionData(MODULE_PAYMENT_SOFORT_MULTIPAY_APIKEY);
    if (!is_object($SofortLib_TransactionData) || !$SofortLib_TransactionData instanceof SofortLib_TransactionData) {
        exit('Error: TransactionData-Object corrupt.');
    }
    $SofortLib_TransactionData->setTransaction($transactionId);
    $SofortLib_TransactionData->sendRequest();
    if ($SofortLib_TransactionData->isError()) {
        exit($SofortLib_TransactionData->getError());
    }
    $paymentMethod = $SofortLib_TransactionData->getPaymentMethod();
    $paymentSecret = $_REQUEST['paymentSecret'];
    $statusReason = $SofortLib_TransactionData->getStatusReason();
    $status = $SofortLib_TransactionData->getStatus();
    $xCustomerId = $SofortLib_TransactionData->getUserVariable(1);
/**
 * Copyright (c) 2012 SOFORT AG
 * 
 * Released under the GNU General Public License (Version 2)
 * [http://www.gnu.org/licenses/gpl-2.0.html]
 *
 * $Date$
 * @version SofortLib 1.5.0rc  $Id$
 * @author SOFORT AG http://www.sofort.com (integration@sofort.com)
 *
 */
// read the notification from php://input  (http://php.net/manual/en/wrappers.php.php)
// this class should be used as a callback function
require_once '../../library/sofortLib.php';
$notification = new SofortLib_Notification();
$notification->getNotification();
echo $notification->getTime();
$transactionId = $notification->getTransactionId();
// fetch some information for the transaction id retrieved above
$transactionData = new SofortLib_TransactionData();
$transactionData->setTransaction($transactionId);
$transactionData->sendRequest();
echo '<table border="1">';
echo '<tr><td>transaction was: </td><td align="right">' . $transactionData->getTransaction() . '</td></tr>';
echo '<tr><td>start date is: </td><td align="right">' . $transactionData->getSofortaboStartDate() . '</td></tr>';
echo '<tr><td>amount is: </td><td align="right">' . $transactionData->getAmount() . ' ' . $transactionData->getCurrency() . '</td></tr>';
echo '<tr><td>interval is: </td><td align="right">' . $transactionData->getSofortaboInterval() . '</td></tr>';
echo '<tr><td>minimum payments: </td><td align="right">' . $transactionData->getSofortaboMinimumPayments() . '</td></tr>';
echo '<tr><td>status is: </td><td align="right">' . $transactionData->getStatus() . ' - ' . $transactionData->getStatusReason() . '</td></tr>';
echo '</table>';