Answer the question
In order to leave comments, you need to log in
Why does the Yandex money payment check not work?
The next task is to check incoming payments for Yandex money, and then enter payment data into the database.
Here is the form of payment itself
<form method="POST" action="https://money.yandex.ru/quickpay/confirm.xml">
<input type="hidden" name="receiver" value="410012043217827"><br>
<input type="hidden" name="formcomment" value="Пополнение баланса в smm-servis.ru">
<input type="hidden" name="short-dest" value="Пополнение баланса в smm-servis.ru">
<input type="hidden" name="label" value="<?php echo $UserID; ?>">
<input type="hidden" name="quickpay-form" value="donate">
<input type="hidden" name="targets" value="Пополнение пользователя <?php echo $UserName; ?>">
<input type="number" name="sum" placeholder="Минимум 10 руб." data-type="number" class="input-md round form-control def-text" style="width:261px;">
<input type="hidden" name="comment" value="<?php echo $UserName; ?>" >
<input type="hidden" name="need-fio" value="false">
<input type="hidden" name="need-fio" value="false">
<input type="hidden" name="need-email" value="false" >
<input type="hidden" name="need-phone" value="false">
<input type="hidden" name="need-address" value="false">
<input type="radio" name="paymentType" value="PC" checked>Яндекс.Деньгами</input><br>
<input type="radio" name="paymentType" value="AC">Банковской картой</input><br>
<input type="submit" name="submit-button" style="width:261px;" class="submit_btn btn btn-mod btn-medium btn-round" value="Пополнение Yandex">
</form>
$secret = '1O3l02UU2QXSxq9mkl1GriNQ'; // секрет, который мы получили в первом шаге от яндекс.
// получение данных.
$r = array(
'notification_type' => $_POST['notification_type'], // p2p-incoming / card-incoming - с кошелька / с карты
'operation_id' => $_POST['operation_id'], // Идентификатор операции в истории счета получателя.
'amount' => $_POST['amount'], // Сумма, которая зачислена на счет получателя.
'withdraw_amount' => $_POST['withdraw_amount'], // Сумма, которая списана со счета отправителя.
'currency' => $_POST['intval'], // Код валюты — всегда 643 (рубль РФ согласно ISO 4217).
'datetime' => $_POST['datetime'], // Дата и время совершения перевода.
'sender' => $_POST['sender'], // Для переводов из кошелька — номер счета отправителя. Для переводов с произвольной карты — параметр содержит пустую строку.
'codepro' => $_POST['codepro'], // Для переводов из кошелька — перевод защищен кодом протекции. Для переводов с произвольной карты — всегда false.
'label' => $_POST['label'], // Метка платежа. Если ее нет, параметр содержит пустую строку.
'sha1_hash' => $_POST['sha1_hash'] // SHA-1 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 не совпадает.'); // останавливаем скрипт. у вас тут может быть свой код.
}
// обработаем данные. нас интересует основной параметр label и withdraw_amount для получения денег без комиссии для пользователя.
// либо если вы хотите обременить пользователя комиссией - amount, но при этом надо учесть, что яндекс на странице платежа будет писать "без комиссии".
$r['amount'] = floatval($r['amount']);
$r['withdraw_amount'] = floatval($r['withdraw_amount']);
$r['label'] = intval($r['label']); // здесь я у себя передаю id юзера, который пополняет счет на моем сайте. поэтому обрабатываю его intval
$time = time();
// дальше ваш код для обновления баланса пользователя / для вставки полученного платежа в историю платежей, например:
$qz = mysql_query ("INSERT INTO `deposits`(`DepositUserID`,`DepositAmount`,`DepositType`,`DepositDate`) VALUES ('$r['label']','$r['amount']','Yandex','time()')",$db);
$qz = mysql_query ("UPDATE `users` SET `UserBalance`=`UserBalance` + '$r['amount']' WHERE `UserID`='$r['label']'",$db);
Answer the question
In order to leave comments, you need to log in
$secret = '1O3l02UU2QXSxq9mkl1GriNQ';
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question