API Perfect Money – важная деталь в ALTERNATE_PHRASE при сверке POST запроса.

Достаточно частый вопрос, который задают мне при работе с Perfect money и на котором я сначала не заострил внимание — это сверка MD5 подписи с сервера при оплате через Perfect Money.

Нужно удостовериться, что присланный POST запрос верен и провести какие-то действия.

В чём заключается невнимательность при настройке? Вроде верно задаёте альтернативную фразу в аккаунте perfect money. НО ВАЖНО, для сверки необходимо использовать не просто ALTERNATE_PHRASE, а его ХЕШ – причём в заглавных буквах.

В примере https://perfectmoney.com/acct/samples/sample_status.txt это написано, но невнимательный читатель обычно убирает закомментированный текст и от этого платежи будут идти неверно.

$PassHash = strtoupper(md5(‘your_passphrase’));

$string =
$_POST[‘PAYMENT_ID’].':’.
$_POST[‘PAYEE_ACCOUNT’].':’.
$_POST[‘PAYMENT_AMOUNT’].':’.
$_POST[‘PAYMENT_UNITS’].':’.
$_POST[‘PAYMENT_BATCH_NUM’].':’.
$_POST[‘PAYER_ACCOUNT’].':’.
$PassHash.':’.
$_POST[‘TIMESTAMPGMT’];

$hash = strtoupper(md5($string));

if ($hash == $_POST[‘V2_HASH’]) {
действия
}

 

Строго не рекомендую держать хеш в открытом виде, так чтоб на будущее знали.

2 Comments

  1. Артём Стёпочкин

    Автор красавец, сам же и ошибся. Вот правильный вариант:

    $PassHash = strtoupper(md5(‘your_passphrase’));

    $string =
    $_POST[‘PAYMENT_ID’].’:’.
    $_POST[‘PAYEE_ACCOUNT’].’:’.
    $_POST[‘PAYMENT_AMOUNT’].’:’.
    $_POST[‘PAYMENT_UNITS’].’:’.
    $_POST[‘PAYMENT_BATCH_NUM’].’:’.
    $_POST[‘PAYER_ACCOUNT’].’:’.
    $PassHash.’:’.
    $_POST[‘TIMESTAMPGMT’];

    $hash = strtoupper(md5($string));

    if ($hash == $_POST[‘V2_HASH’]) {
    действия
    }

    Reply
  2. admin (Post author)

    Все верно, опечатка была.

    Reply

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.