Имею следующую задачу. Необходимо после оплаты определённой суммы денег выслать пользователю письмо с определенным контентом. Нужно использовать Яндекс Деньги. Настроил у себя уведомления от Яндекса до моего сервера, возникающие при совершении платежа.
На Яндексе получил код кнопки для фронта.
<iframe src="https://yoomoney.ru/quickpay/button-widget?targets=123&default-sum=156&button-text=11&yoomoney-payment-type=on&button-size=m&button-color=orange&successURL=&quickpay=small&account=4100116111775687&" width="184" height="36" frameborder="0" allowtransparency="true" scrolling="no"></iframe>
Параметр default-sum можно поменять в коде и сделать его меньше. Не хочется, чтобы у пользователя была такая возможность.
Настроил получение уведомлений от яндекса при совершении любого платежа (с любой суммой).
$secret = "secret";
$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['currency'], // Код валюты — всегда 643 (рубль РФ согласно ISO 4217).
'datetime' => $_POST['datetime'], // Дата и время совершения перевода.
'sender' => $_POST['sender'], // Для переводов из кошелька — номер счета отправителя. Для переводов с произвольной карты — параметр содержит пустую строку.
'codepro' => $_POST['codepro'], // Для переводов из кошелька — перевод защищен кодом протекции. Для переводов с произвольной карты — всегда false.
'label' => $_POST['label'], // Метка платежа. Если ее нет, параметр содержит пустую строку.
'sha1_hash' => $_POST['sha1_hash'], // SHA-1 hash параметров уведомления.
'unaccepted' => $_POST['unaccepted'] // Флаг означает, что пользователь не получил перевод. Возможные причины:
);
//notification_type&operation_id&amount¤cy&datetime&sender&codepro¬ification_secret&label
// проверка хеш
$secret_string = $r['notification_type'].'&'.$r['operation_id'].'&'.$r['amount'].'&'.$r['currency'].'&'.$r['datetime'].'&'.$r['sender'].'&'.$r['codepro'].'&'.$secret.'&'.$r['label'];
if (sha1($secret_string) != $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
// дальше ваш код для обновления баланса пользователя / для вставки полученного платежа в историю платежей, например:
file_put_contents('history.txt', serialize($r));
?>
Хочется, чтобы если сумма платежа была изменена, то пользователь получал ошибку. Решением я вижу возможность зафиксировать параметр amount определенным значением. Тогда, если пользователь подменит этот параметр и вышлет другую сумму у него не пройдет проверка хеша, письмо не будет выслано, но деньги все равно спишутся. Очень заманчивый вариант, но неправильный.
Подскажите, как мне сделать так, чтобы человек не мог выслать никакую иную сумму, кроме конкретно той, которую я задумал??
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
side-bar должен находится справа от основного блока с новостями, но он съезжает вниз, как я понял, из-за отступа справа у основного блока
Как выполняется одно условие понятноМожно ли в одном условии, менять 2 значения? Или только 2 if использовать? Условие одно - значения нужно...
Мне необходимо вычислить интегралОбласть G, ограниченная прямыми x=2, y=x и гиперболой xy=1, вписанная в прямоугольник D