Привет. Столкнулся с такой проблемой, хочу принимать на своем сайте платежи, посылаю себе тестовое уведомление о платеже, яндекс мне присылает ответ в непонятном мне формате, не пойму почему.
Пример обработчика
$secret = '000000000000000000000000';
$r = array(
'notification_type' => $_POST['notification_type'],
'operation_id' => $_POST['operation_id'],
'amount' => $_POST['amount'],
'withdraw_amount' => $_POST['withdraw_amount'],
'currency' => $_POST['intval'],
'datetime' => $_POST['datetime'],
'sender' => $_POST['sender'],
'codepro' => $_POST['codepro'],
'label' => $_POST['label'],
'sha1_hash' => $_POST['sha1_hash']
);
if (sha1($r['notification_type'].'&'.
$r['operation_id'].'&'.
$r['amount'].'&'.
$r['currency'].'&'.
$r['datetime'].'&'.
$r['sender'].'&'.
$r['codepro'].'&'.
$secret.'&'.
$r['label']) != $r['sha1_hash']) {
exit('Верификация не пройдена. SHA1_HASH не совпадает.');
}
file_put_contents('history.php', $r . PHP_EOL , FILE_APPEND);
Открываю файл history.php, чтобы посмотреть что там прислал мне яндекс, а там такая вот штука
a:1:{i:0;a:11:{s:17:"notification_type";s:12:"p2p-incoming";s:6:"amount";s:6:"343.83";s:8:"datetime";s:20:"2017-03-22T07:34:08Z";s:7:"codepro";s:5:"false";s:6:"sender";s:11:"41001000040";s:9:"sha1_hash";s:40:"ab0760f1a82db2bd56ab897b9d8b3090803a8a24";s:17:"test_notification";s:4:"true";s:15:"operation_label";s:0:"";s:12:"operation_id";s:17:"test-notification";s:8:"currency";s:3:"643";s:5:"label";s:0:"";}}
Что я делаю не так?
Пробую через функцию unserialize, если я обрабатываю то, что записалось в файл, а именно вот это
a:1:{i:0;a:11:{s:17:"notification_type";s:12:"p2p-incoming";s:6:"amount";s:6:"343.83";s:8:"datetime";s:20:"2017-03-22T07:34:08Z";s:7:"codepro";s:5:"false";s:6:"sender";s:11:"41001000040";s:9:"sha1_hash";s:40:"ab0760f1a82db2bd56ab897b9d8b3090803a8a24";s:17:"test_notification";s:4:"true";s:15:"operation_label";s:0:"";s:12:"operation_id";s:17:"test-notification";s:8:"currency";s:3:"643";s:5:"label";s:0:"";}}
Вот так
$data = unserialize('a:1:{i:0;a:11:{s:17:"notification_type";s:12:"p2p-incoming";s:6:"amount";s:6:"475.02";s:8:"datetime";s:20:"2017-03-22T07:57:29Z";s:7:"codepro";s:5:"false";s:6:"sender";s:11:"41001000040";s:9:"sha1_hash";s:40:"cfff3e99ad82fe74802802a4cb7d8838f69440ae";s:17:"test_notification";s:4:"true";s:15:"operation_label";s:0:"";s:12:"operation_id";s:17:"test-notification";s:8:"currency";s:3:"643";s:5:"label";s:0:"";}}');
echo "<pre>";
print_r($data);
echo "</pre>";
То на выходе получаем вот это
Array
(
[0] => Array
(
[notification_type] => p2p-incoming
[amount] => 475.02
[datetime] => 2017-03-22T07:57:29Z
[codepro] => false
[sender] => 41001000040
[sha1_hash] => cfff3e99ad82fe74802802a4cb7d8838f69440ae
[test_notification] => true
[operation_label] =>
[operation_id] => test-notification
[currency] => 643
[label] =>
)
)
Но если я пытаюсь сделать это же самое при обработке ответа, то ничего не получается и в файл пишется то же самое.
Вот так обрабатываю ответ, например хочу узнать отправителя.
$data = unserialize($r);
file_put_contents('history.php', $data[0]['sender'] . PHP_EOL , FILE_APPEND);
получаю
a:1:{i:0;a:11:{s:17:"notification_type";s:12:"p2p-incoming";s:6:"amount";s:6:"475.02";s:8:"datetime";s:20:"2017-03-22T07:57:29Z";s:7:"codepro";s:5:"false";s:6:"sender";s:11:"41001000040";s:9:"sha1_hash";s:40:"cfff3e99ad82fe74802802a4cb7d8838f69440ae";s:17:"test_notification";s:4:"true";s:15:"operation_label";s:0:"";s:12:"operation_id";s:17:"test-notification";s:8:"currency";s:3:"643";s:5:"label";s:0:"";}}