Пример #1
0
        $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!';
}
Пример #2
0
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;
}