Есть обработчик уведомлений от QIWI P2P:
include __DIR__ . '/../../../vendor/autoload.php';
include __DIR__ . ('/../../../Modules/MySqli/link.php');
include __DIR__ . ('/../../../Modules/MySqli/vars.php');
include __DIR__ . ('/../Functions.php');
require_once __DIR__ . '/../../Give_Class.php';
use Donate\GiveDonate;
$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'];
$nickname = $array_body['bill']['customFields']['nickname'];
$promo = $array_body['bill']['customFields']['promo'];
$count = $array_body['bill']['customFields']['count'];
$good = $array_body['bill']['customFields']['good'];
$paySourcesFilter = $array_body['bill']['customFields']['paySourcesFilter'];
/* тут могут быть дополнительные параметры по типу почты, телефона и тд, ознакомьтесь с документацией если они Вам нужны */
$good_cur = findGood($good);
$good_category = $good_cur['category'];
$array_server = mysqli_query($link, "SELECT * FROM `categorys` WHERE `id`='{$good_category}'");
while ($row = mysqli_fetch_assoc($array_server)) {
$server_cur = $row['server'];
}
date_default_timezone_set('UTC');
$date_cur = date("y-m-d");
$localtime_assoc = localtime(time(), true);
$time_cur = $localtime_assoc['tm_hour'] . ":" . $localtime_assoc['tm_min'] . ":" . $localtime_assoc['tm_sec'];
$invoice_parameters = $amount_currency . '|' . $amount_value . '|' . $billId . '|' . $siteId . '|' . $status_value;
$sha256_hash = hash_hmac('sha256', $invoice_parameters, $qiwi_secret);
if (!empty($sha256_hash_header) && $sha256_hash_header == $sha256_hash && $status_value == 'PAID') {
$response = mysqli_query($link, "INSERT INTO `payments` (`id`, `login`, `good_id`, `sum`, `category`, `server`, `date_pay`, `time_pay`, `amount`, `promo-use`, `status`) VALUES (NULL, '{$nickname}', '{$good}', '{$amount_value}', '{$good_category}', '{$server_cur}', '{$date_cur}', '{$time_cur}', '{$count}', '{$promo}', 'NULL')");
$request = new GiveDonate();
$nickname_o = $request->nickname = $nickname;
$amount_o = $request->amount = $count;
$good_id_o = $request->good_id = $good;
$checks = $request->Give($nickname_o, $good_id_o, $amount_o);
die('OK');
}
Почему-то после того как клиент оплатил, в базу данных заносится запись, потом через 20 секунд еще такая, и это повторяется раз 5, тоесть обработчик доолжен внести один раз, а киви почему то на него переходит раз 5.