Почему я получаю разные md5 хэши?

214
10 июня 2017, 16:08

Доброго времени!

Формирую POST запрос и отправляю его на другой URL. В запросе содержится сформированный md5 хэш. Проблема в том, что имея одинаковые значения я получаю разные хэши. Почему так происходит?

Запрос:

$merchant_password = "password";
    $merchant_name = "Name merchant";
    $amount = "100";
    $date = "2017-06-09 11:20:16";
    $id_transfer = "f191a923-6311-47c8-bc38-04851355ae68";
    $fee = "30";

    $hash_string2=
         $amount.':'
        .$merchant_password.':'
        .$date.':'
        .$id_transfer;
    $hash2=strtoupper(md5($hash_string2));
    // Send POST request
    $url = "http://example.com/post.php";  
    $post_data = array (  
        "amount" => $amount,
        "fee" => $fee,  
        "method" => "ADV Cash",
        "merchant_name" => $merchant_name,
        "status" => "Confirmed",
        "date" => $date,
        "id_method_transaction" => $id_transfer,
        "ballance" => "123",
        "hash" => $hash2
    ); 
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    // указываем, что у нас POST запрос  
    curl_setopt($ch, CURLOPT_POST, 1);  
    // добавляем переменные  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  
    $output = curl_exec($ch);  
    curl_close($ch);  
    echo $output; 
    }else{
    }

Обработчик запроса:

<?php
// строка, которую будем записывать
$merchant_password = "password";
    $amount = $_POST['amount'];
    $fee = $_POST['fee'];
    $method = $_POST['method'];
    $status = $_POST['status'];
    $date = $_POST['date'];
    $id_method_transaction = $_POST['id_method_transaction'];
    $ballance = $_POST['ballance'];
    $merchant_name = $_POST['merchant_name'];
    $id_transfer = $_POST['id_transfer'];
$hash = $_POST['hash'];
$hash_string=
         $amount.':'
        .$merchant_password.':'
        .$date.':'
        .$id_transfer;
    $user_hash=strtoupper(md5($hash_string));
// открываем файл, если файл не существует,
//делается попытка создать его
$fp = fopen("file.txt", "w");
// записываем в файл текст
fwrite($fp, $amount . ' ' . $fee . ' ' . $method . ' ' . $status . ' '. $date . ' '. $id_method_transaction . ' '. $ballance . ' '. $merchant_name . ' ' .$id_transfer . ' ' . $hash . ' // user hash - ' . $user_hash);
// закрываем
fclose($fp);
?>

Результат выполнения запроса:

100 30 ADV Cash Confirmed 2017-06-09 11:20:16 f191a923-6311-47c8-bc38-04851355ae68 123 Name merchant 5F8D58C795D11BE3EB868470F1A8A18E // user hash - 8603190AF8C222161DDD7C6A78BED5E2

Благодарен за любую помощь или направление!

Answer 1

$id_transfer = $_POST['id_transfer'];

Найдите, пожалуйста, в отправляемых данных id_transfer. Его там нет.

С NULL'ом вместо id_transfer как раз наблюдаемый хэш и получается.

Следовательно, вы не читаете даже самое банальное, что можно придумать - сообщения вашего лучшего друга, языка программирования. Если вы не читаете предупреждения интерпретатора, то чему вообще удивляться?

READ ALSO
нет кнопки скопировать все записи в phpmyadmin

нет кнопки скопировать все записи в phpmyadmin

здравствуйте, нет кнопки скопировать выделенные записи в phpmyadmin (mariadb) пробовал с рут пользователя - тоже самое

176
Как настроить модуль seopro в opencart 2.2

Как настроить модуль seopro в opencart 2.2

Добрый день друзья, не могу установить модуль SeoPro на opencart 22

233