Как и зачем проверять подлинность
Чтобы избежать мошеннических действий со с тороны третьих лиц необходимо проверять параметр check
(цифровая подпись) при обработке запроса от системы Провайдера. Цифровая подпись обеспечивает высокий уровень безопасности, так как формируется с использованием secret_key
, известному лишь Вашему сервису и системе Провайдера. В случае компрометации secret_key
необходимо сообщить об этом Вашему менеджеру или в техническую поддержку.
Если магазин не использует скрипт для обработки запросов от системы, то обязательно указывайте Email
при создании сервиса, так как необходимо вручную проверять стоимость товара и заплаченную клиентом сумму (она будет указана в электронном письме).
Подписываемые параметры должны быть представлены в urldecoded формате. Например, если значение поля name будет на кириллице (что будет довольно часто), то в переменной $_POST["name"]
будет содержаться urlencode($name)
, в то время как для подписи с нашей стороны используется $name
.
Кроме параметров, участвующих в цифровой подписи, на обработчик и страницу успешной покупки приходят параметры phone_number
и email
, телефон и email пользователя (если Вы сделали обязательным ввод этих данных в настройках сервиса)
Если сумма платежа изменена и скрипт на стороне магазина не проверяет подлинность запроса, то возможно мошенничество со стороны недобросовестных пользователей.
Внимание! Чтобы избежать мошеннических действий со стороны третьих лиц при обработке нотификации необходимо проверять:
- соответствие переданных в нотификации значений параметров и
check
(цифровая подпись) - соответствие переданного в нотификации значения
system_income
и суммы платежа cost указанной при инициализации оплаты. - опционально можно проверять и другие параметры переданные при инициацизации оплаты, например
order_id
,comment
.
Указанные проверки обеспечивают сверку стоимости товара/услуги с фактически уплаченной клиентом суммой. В случае несовпадения этих параметров нужно отказывать покупателю в предоставлении товара/услуги и сообщать о таких случаях по адресу acq_integration@life-pay.ru
$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)) . $secret_key);