Безопасная оплата через API WebMoney

15 Ноя
2011

Собственно статья будет посвящена созданию разного рода проверок на безопасность создаваемого скрипта на php, при работе с API WebMoney. Суть всего в том, что любой юзер при оплате товара или услуги может подделать POST или GET запрос, который передётся в WebMoney, а точнее поставить свою цену, вместо указанной. Вот о том, как сделать проверку на равильность цены я и расскажу в этой статье. Поехали.

Для начала определимся с основными переменными, остальные буду комментировать в коде скрипта.

$wm_summ=$_POST['LMI_PAYMENT_AMOUNT'];  //Принимаем через POST запрос сумму оплаты, которая пришла в WebMoney с нашего сайта
$pay_summ  //Цена товара, которую установили мы сами


А вот тут сам код, в нём распишу все функции, а точнее какая за что отвечает, а также закомментирую переменный, точнее что в них лежит.

if($_POST['LMI_PREREQUEST']==1)  //Если пришёл положительный ответ, то продолжаем работу по оплате

{

if ($wm_summ == $pay_summ)

       echo "Цена верна";

     else {

      echo "Ошибка цены, транзакция отменена";

     }

} else {

    $test_st = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].$secret_key.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM'];  // Склеиваем строку параметров

    $hash = strtoupper(md5(test_st));  //Переводим эту строку в верхний регистр и шифруем её в MD5

    if($hash!=$_POST['LMI_HASH']) exit;  // Прерываем работу скрипта, если контрольные суммы не совпадают

    $id     = $_POST['id'];
    $wm_summ = $_POST['LMI_PAYMENT_AMOUNT'];
    $wmid   = $_POST['LMI_PAYER_WM'];
    $wm     = $_POST['LMI_PAYER_PURSE'];
    $date   = $_POST['LMI_SYS_TRANS_DATE'];

     echo "Благодарим вас за покупку товара в нашем магазине! Ваша ссылка для скачивание: http://сайт.ru/file.zip";

   }


Основные асспекты я вам рассказал, если что-то сделал не так, пишите в комментариях, будем вместе обсуждать и улучшать данную процедуру проверки.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх