Чтобы избежать мошеннических действий со стороны третьих лиц необходимо проверять параметр check (цифровая подпись) при обработке запроса. Цифровая подпись обеспечивает высокий уровень безопасности, так как использует параметр key, известный лишь Вашему сервису и системе Банка. В случае компрометации данного ключа необходимо сообщить об этом по адресу isupport@rficb.ru.Также необходимо проверять параметр system_income, сверяя его с параметром cost (который Вы передаете нам). Это является сверкой стоимости товара/услуги с уплаченной клиентом суммой. В случае несовпадения этих параметров нужно отказывать покупателю в предоставлении товара/услуги и сообщать о таких случаях по адресу isupport@rficb.ru.
Если Вы не используйте скрипт для обработки запросов от системы, то обязательно указывайте Email при создании сервиса. Так как будет необходимо вручную проверять стоимость товара и заплаченную клиентом сумму (она будет указана в электронном письме).
Подписываемые параметры должны быть представлены в urldecoded формате. Например, если значение поля name будет на кириллице (что будет довольно часто), то в переменной $_POST[“name”] будет содержаться urlencode($name), в то время как для подписи с нашей стороны используется $name.
Кроме параметров, участвующих в цифровой подписи, на обработчик и страницу успешной покупки приходят параметры phone_number и email телефон и email пользователя (если Вы сделали обязательным ввод этих данных в настройках сервиса)
Если сумма платежа изменена до входа в нашу систему и скрипт на Вашей стороне её не проверяет, то возможно мошенничество со стороны недобросовестных пользователей.
Внимание! Чтобы избежать мошеннических действий со стороны третьих лиц необходимо проверять параметр check (цифровая подпись) и system_income при обработке запроса. Цифровая подпись обеспечивает высокий уровень безопасности, так как использует параметр key, известный лишь Вашему сервису и системе РФИ Банка.
Также необходимо проверять параметр system_income, сверяя его с параметром cost (который передаете нам). Это является сверкой стоимости товара/услуги с уплаченной клиентом суммой. В случае несовпадения этих параметров нужно отказывать покупателю в предоставлении товара/услуги. При оплате через Терминалы клиент может фактически внести в терминал большую, чем требует сумму. В этом случае system_income будет больше чем cost. То есть правильнее проверять что system_income больше либо равен cost.
Пример генерации подписи на PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $data = array( 'tid' => $_POST['tid'], 'name' => $_POST['name'], 'comment' => $_POST['comment'], 'partner_id' => $_POST['partner_id'], 'service_id' => $_POST['service_id'], 'order_id' => $_POST['order_id'], 'type' => $_POST['type'], 'partner_income' => $_POST['partner_income'], 'system_income' => $_POST['system_income'], 'test' => $_POST['test'], ); $check = md5(join('', array_values($data)) . $key); |