/**
  * Checks received data and validates hash.
  *
  * @param string $receivedData received data
  * @return boolean
  */
 function validateParameters()
 {
     $notification = new Barzahlen_Notification(MODULE_PAYMENT_BARZAHLEN_SHOPID, MODULE_PAYMENT_BARZAHLEN_NOTIFICATIONKEY, $this->receivedData);
     try {
         $notification->validate();
     } catch (Exception $e) {
         $this->bzLog('barzahlen/ipn: ' . $e);
         return false;
     }
     return $notification->isValid();
 }
 /**
  * Test function with valid refund notification without custom vars and origin order id.
  */
 public function testValidateWithValidShortRefundNotification()
 {
     $params = array('state' => 'refund_completed', 'refund_transaction_id' => '1', 'origin_transaction_id' => '1', 'shop_id' => '10483', 'customer_email' => '*****@*****.**', 'amount' => '24.95', 'currency' => 'EUR', 'hash' => 'da5ec940ce1be06fab76f96aa192953db093e0997f0c5e62a5e47ebde3b1f5791daf29fe5eafeea176f07c07e470bae8d9ced710bfd90f62dd238bf621d20717', 'page' => 'ipn/barzahlen');
     $notification = new Barzahlen_Notification(SHOPID, NOTIFICATIONKEY, $params);
     $notification->validate();
     $this->assertTrue($notification->isValid());
 }
 /**
  * Notifications are valided and the updates will be performed.
  * States set in DB in table s_core_states
  */
 public function notifyAction()
 {
     $config = Shopware()->Plugins()->Frontend()->ZerintPaymentBarzahlen()->Config();
     $shopId = $config->barzahlenShopId;
     $notificationKey = $config->barzahlenNotificationKey;
     $notify = new Barzahlen_Notification($shopId, $notificationKey, $this->Request()->getParams());
     try {
         $notify->validate();
     } catch (Exception $e) {
         $this->_logError($e);
     }
     if ($notify->isValid()) {
         $this->_sendHeader(200);
         $order = Shopware()->Modules()->Order();
         $orderId = $this->_getOrderId($this->Request()->transaction_id);
         $orderNumber = isset($this->Request()->order_id) ? $this->Request()->order_id : $this->_getOrderNumber($orderId);
         if (!$this->_checkPaymentStatus($orderId)) {
             $order->setPaymentStatus($orderId, self::PAYMENT_VERIFY);
             $this->_logError("Payment for order " . $orderNumber . " couldn't be updated by notification. Already processed.");
             return;
         }
         switch ($this->Request()->state) {
             case 'paid':
                 $order->setPaymentStatus($orderId, self::PAYMENT_PAID);
                 $this->_setClearedDate($this->Request()->transaction_id);
                 break;
             case 'expired':
                 $order->setPaymentStatus($orderId, self::PAYMENT_EXPIRED);
                 break;
             default:
                 $order->setPaymentStatus($orderId, self::PAYMENT_VERIFY);
                 break;
         }
     } else {
         $this->_sendHeader(400);
     }
 }
 /**
  * Logs error message along with the received data.
  *
  * @param string $message
  */
 protected function _logIpnError($sMessage)
 {
     $sMessage .= ' ' . serialize($this->_oNotification->getNotificationArray());
     oxRegistry::getUtils()->writeToLog(date('c') . ' ' . $sMessage . "\r\r", self::LOGFILE);
 }