/** * Тест метода checkResult */ public function testCheckResult() { $config = $this->_getConfig(); $this->_setConfig(); $invId = 1; $outSum = 2; $term = 3; $hash = md5($outSum . ':' . $invId . ':' . $config['pass2'] . ':' . 'shpa=' . $term); $testResult = Robokassa::checkResult($invId, $outSum, $term, $hash); $this->assertEquals($testResult, true); $testResult = Robokassa::checkResult($invId, $outSum, $term, 'wrong_hash'); $this->assertEquals($testResult, false); }
/** * /robokassa/result * Отвечает на запрос робокассы, о результате операции * * @param sfWebRequest $request */ public function executeResult(sfWebRequest $request) { // Web-debug панеька не нужна в dev sfConfig::set('sf_web_debug', false); // Получаем POST параметры $transactionId = (int) $request->getPostParameter("InvId", 0); $price = $request->getPostParameter("OutSum", 0); $signature = $request->getPostParameter("SignatureValue", ""); $term = (int) $request->getPostParameter("shpa", 0); // Проверяем ID транзакции $transaction = Doctrine::getTable('BillingTransaction')->find($transactionId); $this->forward404Unless($transaction); // Проверяем цену $this->forward404Unless(floatval($transaction->getTotal()) == floatval($price)); // Проверяем подпись $this->forward404Unless(Robokassa::checkResult($transactionId, $price, $term, $signature)); // Если проверка успешна, отоправляем "OK+номер транзакции" без обвязки! $this->getResponse()->setContent("OK" . $transactionId); return sfView::NONE; }