Dungeon Master
-
Автор темы
- #1
После оплаты 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();
}
?>