/** * функция проверяет параметры полченные от сервера SmsCoin в $_POST (Success URL или Fail URL) * * @param (array) $arrData - массив параметров ($_POST от сервера SmsCoin) * * @return bool */ static function checkStatusParams(&$arrData) { if (isset($arrData['s_purse']) && isset($arrData['s_order_id']) && isset($arrData['s_amount']) && isset($arrData['s_clear_amount']) && isset($arrData['s_status']) && isset($arrData['s_sign']) && isset($arrData['sd_service']) && $arrData['sd_service']) { return $arrData['s_sign'] === smscoin::refSign(array(SMSCOIN_CONF_BANK_SECRET_CODE, $arrData['s_purse'], $arrData['s_order_id'], $arrData['s_amount'], $arrData['s_clear_amount'], $arrData['s_status'])) ? true : false; } else { return false; } }
$payments->doAction($ourData[0], $ourData[1], smscoin::generateLogData($_POST, 'SUCCESS'), $_POST['s_order_id']); } else { // логируем ответ в файл $logData = logs::logPaymentData($_POST, 'WRONG PARAMS', 'SMSCoin'); $payments->sendAdminEmail($logData, 'WRONG PARAMS'); } } elseif (isset($_GET['success']) && !empty($_POST)) { if (smscoin::checkStatusParams($_POST)) { $ourData = $payments->explodeServiceString($_POST['sd_service']); $payments->succesAnswer($ourData[0]); } } elseif (isset($_GET['fail']) && !empty($_POST)) { if (smscoin::checkStatusParams($_POST)) { // логируем ответ в файл $logData = logs::logPaymentData($_POST, 'FAIL', 'SMSCoin'); $payments->sendAdminEmail($logData, 'FAIL'); $smarty->assignByRef('order_id', $_POST['s_order_id']); $smarty->assignByRef('amount', $_POST['s_amount']); $smarty->assign('include_template', SD_ROOT_DIR . 'core/mods/payments/smscoin/templates/smscoin.fail.tpl'); } } else { // проверяем наличие в сессии необходимых параметров и установлена ли цена в тарифной сетке для выбранной услуги if (isset($_SESSION['payment']) && isset($_SESSION['payment']['service']) && $payments->checkPriceInTariff($_SESSION['payment']['service'], $arrTariffs)) { $smsData = array('order_id' => time(), 'amount' => $arrTariffs[$_SESSION['payment']['service']], 'clear_amount' => 0, 'description' => $payments->generatePaymentDescription($_SESSION['payment']['service']), 'service' => $_SESSION['payment']['service'] . '::' . $_SESSION['payment']['id']); $smsData['sign'] = smscoin::refSign(array(SMSCOIN_CONF_BANK_ID, $smsData['order_id'], $smsData['amount'], $smsData['clear_amount'], $smsData['description'], SMSCOIN_CONF_BANK_SECRET_CODE)); $smarty->assignByRef('smsData', $smsData); $smarty->assign('include_template', SD_ROOT_DIR . 'core/mods/payments/smscoin/templates/smscoin.pay.form.tpl'); } else { $arrErrors[] = ERROR_PAY_SYSTEM_NOT_DEFINE_PRICE; } }