/**
  * (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;
 }
コード例 #2
0
// echo $SofortLib_Notification->getTransactionId();
// echo '<br />';
// echo $SofortLib_Notification->getTime();
// echo '<br />';
$SofortLibTransactionData = new SofortLibTransactionData($configkey);
// If SofortLib_Notification returns a transaction_id:
//$SofortLibTransactionData->addTransaction($TestNotification);
//$SofortLibTransactionData->addTransaction(array('00907-01222-50F00112-D86E', '00907-01222-50EFFC79-7E33'));
//$SofortLibTransactionData->addTransaction(array('00907-37660-51D2CD5E-8182'));
$SofortLibTransactionData->addTransaction('00907-01222-51ADD8C9-86C8');
//$SofortLibTransactionData->setTime('2012-11-14T18:00+02:00', '2012-12-13T00:00+02:00');
//$SofortLibTransactionData->setNumber(5, 1);
$SofortLibTransactionData->sendRequest();
$output = array();
$methods = array('getAmount' => '', 'getAmountRefunded' => '', 'getCount' => '', 'getPaymentMethod' => '', 'getConsumerProtection' => '', 'getStatus' => '', 'getStatusReason' => '', 'getStatusModifiedTime' => '', 'getLanguageCode' => '', 'getCurrency' => '', 'getTransaction' => '', 'getReason' => array(0, 0), 'getUserVariable' => 0, 'getTime' => '', 'getProjectId' => '', 'getRecipientHolder' => '', 'getRecipientAccountNumber' => '', 'getRecipientBankCode' => '', 'getRecipientCountryCode' => '', 'getRecipientBankName' => '', 'getRecipientBic' => '', 'getRecipientIban' => '', 'getSenderHolder' => '', 'getSenderAccountNumber' => '', 'getSenderHolder' => '', 'getSenderBankCode' => '', 'getSenderCountryCode' => '', 'getSenderBankName' => '', 'getSenderBic' => '', 'getSenderIban' => '');
foreach ($methods as $method => $params) {
    if (count($params) == 2) {
        $output[] = $method . ': ' . $SofortLibTransactionData->{$method}($params[0], $params[1]);
    } else {
        if ($params !== '') {
            $output[] = $method . ': ' . $SofortLibTransactionData->{$method}($params);
        } else {
            $output[] = $method . ': ' . $SofortLibTransactionData->{$method}();
        }
    }
}
if ($SofortLibTransactionData->isError()) {
    echo $SofortLibTransactionData->getError();
} else {
    echo implode('<br />', $output);
}