$uid = $row['uid']; if ($uid == $new_uid) { echo answer($_REQUEST['type'], 0, $pay_for, $order_amount, $order_currency, 'OK'); //Отвечаем серверу OnPay, что все хорошо, можно принимать деньги } else { echo 'Bad check request'; } } if ($_REQUEST['type'] == 'pay') { $onpay_id = $_REQUEST['onpay_id']; $pay_for = $_REQUEST['pay_for']; $order_amount = $_REQUEST['order_amount']; $order_currency = $_REQUEST['order_currency']; $balance_amount = $_REQUEST['balance_amount']; $balance_currency = $_REQUEST['balance_currency']; $exchange_rate = $_REQUEST['exchange_rate']; $paymentDateTime = $_REQUEST['paymentDateTime']; $md5 = $_REQUEST['md5']; $md5fb = strtoupper(md5($_REQUEST['type'] . ";" . $pay_for . ";" . $onpay_id . ";" . $order_amount . ";" . $order_currency . ";" . $key . "")); //Сверяем строчки хеша (присланную и созданную нами) if ($md5fb != $md5) { echo answerpay($_REQUEST['type'], 7, $pay_for, $order_amount, $order_currency, 'Md5 signature is wrong', $onpay_id); } else { $sql = "INSERT INTO " . $SysValue['base']['table_name33'] . " VALUES ('{$pay_for}','Onpay Cash Register','{$order_amount}','" . date("U") . "')"; $result = mysql_query($sql); echo answerpay($_REQUEST['type'], 0, $pay_for, $order_amount, $order_currency, 'OK', $onpay_id); } } } else { echo 'Bad request!'; }
function process_api_request() { $rezult = ''; $error = ''; //проверяем чек запрос if ($_REQUEST['type'] == 'check') { //получаем данные, что нам прислал чек запрос $order_amount = $_REQUEST['order_amount']; $order_currency = $_REQUEST['order_currency']; $pay_for = $_REQUEST['pay_for']; $md5 = $_REQUEST['md5']; //выдаем ответ OK на чек запрос $rezult = answer($_REQUEST['type'], 0, $pay_for, $order_amount, $order_currency, 'OK'); } //проверяем запрос на пополнение if ($_REQUEST['type'] == 'pay') { $onpay_id = $_REQUEST['onpay_id']; $pay_for = $_REQUEST['pay_for']; $order_amount = $_REQUEST['order_amount']; $order_currency = $_REQUEST['order_currency']; $balance_amount = $_REQUEST['balance_amount']; $balance_currency = $_REQUEST['balance_currency']; $exchange_rate = $_REQUEST['exchange_rate']; $paymentDateTime = $_REQUEST['paymentDateTime']; $md5 = $_REQUEST['md5']; //производим проверки входных данных if (empty($onpay_id)) { $error .= "Не указан id<br>"; } else { if (!is_numeric(intval($onpay_id))) { $error .= "Параметр не является числом<br>"; } } if (empty($order_amount)) { $error .= "Не указана сумма<br>"; } else { if (!is_numeric($order_amount)) { $error .= "Параметр не является числом<br>"; } } if (empty($balance_amount)) { $error .= "Не указана сумма<br>"; } else { if (!is_numeric(intval($balance_amount))) { $error .= "Параметр не является числом<br>"; } } if (empty($balance_currency)) { $error .= "Не указана валюта<br>"; } else { if (strlen($balance_currency) > 4) { $error .= "Параметр слишком длинный<br>"; } } if (empty($order_currency)) { $error .= "Не указана валюта<br>"; } else { if (strlen($order_currency) > 4) { $error .= "Параметр слишком длинный<br>"; } } if (empty($exchange_rate)) { $error .= "Не указана сумма<br>"; } else { if (!is_numeric($exchange_rate)) { $error .= "Параметр не является числом<br>"; } } //если нет ошибок if (!$error) { if (is_numeric($pay_for)) { //Если pay_for - число $sum = floatval($order_amount); $rezult = data_get_created_operation($pay_for); if (mysql_num_rows($rezult) == 1) { //создаем строку хэша с присланных данных $md5fb = strtoupper(md5($_REQUEST['type'] . ";" . $pay_for . ";" . $onpay_id . ";" . $order_amount . ";" . $order_currency . ";" . get_constant('private_code'))); //сверяем строчки хеша (присланную и созданную нами) if ($md5fb != $md5) { $rezult = answerpay($_REQUEST['type'], 8, $pay_for, $order_amount, $order_currency, 'Md5 signature is wrong. Expected ' . $md5fb, $onpay_id); } else { $time = time(); $rezult_balance = get_constant('use_balance_table') ? data_update_user_balance($pay_for, $sum) : true; $rezult_operation = data_set_operation_processed($pay_for); //если оба запроса прошли успешно выдаем ответ об удаче, если нет, то о том что операция не произошла if ($rezult_operation && $rezult_balance) { $rezult = answerpay($_REQUEST['type'], 0, $pay_for, $order_amount, $order_currency, 'OK', $onpay_id); } else { $rezult = answerpay($_REQUEST['type'], 9, $pay_for, $order_amount, $order_currency, 'Error in mechant database queries: operation or balance tables error', $onpay_id); } } } else { $rezult = answerpay($_REQUEST['type'], 10, $pay_for, $order_amount, $order_currency, 'Cannot find any pay rows acording to this parameters: wrong payment', $onpay_id); } } else { //Если pay_for - не правильный формат $rezult = answerpay($_REQUEST['type'], 11, $pay_for, $order_amount, $order_currency, 'Error in parameters data', $onpay_id); } } else { //Если есть ошибки $rezult = answerpay($_REQUEST['type'], 12, $pay_for, $order_amount, $order_currency, 'Error in parameters data: ' . $error, $onpay_id); } } echo $rezult; return $rezult; }