Вопрос Помощь с PHP кодом, проверка оплаты QIWI

Dungeon Master
Начинающий
Статус
Оффлайн
Регистрация
24 Апр 2021
Сообщения
109
Реакции[?]
21
Поинты[?]
0
После оплаты QIWI отправляется запрос в result, где должен провериться платёж и написать сообщение ВКонтакте, но почему-то этого не происходит, оно даже не доходит до if ($sha256_hash_header == $sha256_hash && !empty($sha256_hash_header) && $status_value == 'PAID') {, проверки. Помогите пожалуйста найти в чём ошибка!

PHP:
<?php
 
require "../db.php";
require_once "../vendor/config.php";
include 'config.php'; // подключаем ранее созданный файл

$secret_key = settings('secret_key'); // Секретный ключ, берется из конфига

$sha256_hash_header = $_SERVER['HTTP_X_API_SIGNATURE_SHA256']; // Получаем заголовок

$entity_body = file_get_contents('php://input');  // Декодирую тело входящего запроса
$array_body = json_decode($entity_body, 1);           //  Декодирует строку JSON

$amount_currency = $array_body['bill']['amount']['currency'];
$amount_value = $array_body['bill']['amount']['value'];
$billId = $array_body['bill']['billId'];
$siteId = $array_body['bill']['siteId'];
$status_value = $array_body['bill']['status']['value'];
/* тут могут быть дополнительные параметры по типу почты, телефона и тд, ознакомьтесь с документацией если они Вам нужны */

$invoice_parameters = $amount_currency . '|' . $amount_value . '|' . $billId . '|' . $siteId . '|' . $status_value;
 
$sha256_hash = hash_hmac('sha256', $invoice_parameters, $secret_key);

if ($sha256_hash_header == $sha256_hash && !empty($sha256_hash_header) && $status_value == 'PAID') {

            $infovivod = 'aboba';

            function send($message)
            {
            $url = 'https://api.vk.com/method/messages.send';
            $params = array(
            'user_id' => '322259549',    // Кому отправляем
            'message' => $message,   // Что отправляем
            'access_token' => 'vk1.a.TDTd3M8C6d7v8oWBspHkMTVEx7qMaUHmnOI9MX6LvzGbm2DhXfW5L8TCDfwP6EHC_k3FpWjqQhhsZhvj4PXO3QbW4snqcr-L0WlWwKlW2yLZrm534wrJgGpld5ODyyaaA9JO42AWCa0bDCFXsU7bkqC5O1TPzInQQCuOJhxGsfCC1SK4TliJ22V0yXsItlB0X9-_4pP68KCWRWVcsl1iCg',  // access_token можно вбить хардкодом, если работа будет идти из под одного юзера
            'v' => '5.81',
            );
    
            // В $result вернется id отправленного сообщения
            $result = file_get_contents($url, false, stream_context_create(array(
             'http' => array(
             'method'  => 'POST',
             'header'  => 'Content-type: application/x-www-form-urlencoded',
             'content' => http_build_query($params)
             )
              )));
          }
          $func = 'send';
          $func($infovivod);

    /* Проверяем подлинность уведомления и статус платежа "Оплачено". В случае успеха выполняем код, который Вы тут напишите :) */
} else {
    http_response_code(404);
    die();
}
?>
 
Пользователь
Статус
Оффлайн
Регистрация
27 Дек 2020
Сообщения
60
Реакции[?]
53
Поинты[?]
34K
проблемы с получением ответа от сервера, как я полагаю, плюс контекст очень плохой, ничего толком от куска не понятно
 
Сверху Снизу