/** * (non-PHPdoc) * @see IActionController::executeAction() */ public function executeAction($parameters) { $configKey = trim($this->_websoccer->getConfig("sofortcom_configkey")); if (!strlen($configKey)) { throw new Exception("Sofort.com configuration key is not configured."); } // verify user $userId = $parameters['u']; $result = $this->_db->querySelect("id", $this->_websoccer->getConfig("db_prefix") . "_user", "id = %d", $userId); $user = $result->fetch_array(); $result->free(); if (!$user) { throw new Exception("illegal user id"); } // read the notification from php://input (http://php.net/manual/en/wrappers.php.php) $SofortLib_Notification = new SofortLibNotification(); $TestNotification = $SofortLib_Notification->getNotification(file_get_contents('php://input')); // read data $SofortLibTransactionData = new SofortLibTransactionData($configKey); $SofortLibTransactionData->addTransaction($TestNotification); // verify transaction data $SofortLibTransactionData->sendRequest(); if ($SofortLibTransactionData->isError()) { EmailHelper::sendSystemEmail($this->_websoccer, $this->_websoccer->getConfig("systememail"), "Failed Sofort.com payment notification", "Error: " . $SofortLibTransactionData->getError()); throw new Exception($SofortLibTransactionData->getError()); } else { // verify status if ($SofortLibTransactionData->getStatus() != 'received') { EmailHelper::sendSystemEmail($this->_websoccer, $this->_websoccer->getConfig("systememail"), "Failed Sofort.com payment notification: invalid status", "Status: " . $SofortLibTransactionData->getStatus()); throw new Exception("illegal status"); } // credit amount $amount = $SofortLibTransactionData->getAmount(); PremiumDataService::createPaymentAndCreditPremium($this->_websoccer, $this->_db, $userId, $amount, "sofortcom-notify"); } return null; }