Установка платежной системы на свой сайт и получение информации об оплате у начинающих веб-мастеров вызывают проблемы, особенно в части обработки HTTP-уведомлений. Давайте пошагово разберемся, как настроить оплату на yoomoney кошелек.
В начале нужно отметить, что yoomoney кошелек (без дополнительных сервисов) может получать деньги либо с кошелька yoomoney, либо с банковской карты. И этого зачастую достаточно.
Рассмотрим краткую схему работы платежной системы при использовании формы отправки на yoomoney кошелек:
1. Устанавливаем на страницу своего сайта форму оплаты.
2. Настраиваем HTTP-уведомление на странице yoomoney.
3. Создаем код php – обработчик на странице своего сайта, где осуществляем проверку факта платежа и дальнейшие действия.
Казалось бы, все просто. И документация yoomoney подробно описывает два первых пункта. А вот третий пункт вызывает вопросы. Где посмотреть факт платежа и какие предпринять действия, куда нас перенаправит yoomoney?
Давайте разберемся по порядку. И так.
Шаг 1. Создаем форму, следуя документации yoomoney.
<form action="https://yoomoney.ru/quickpay/confirm" method="post">
<input type="hidden" name="receiver" value="4100XXXXXXXXXXX">
<input type="hidden" name="quickpay-form" value="button">
<input type="radio" name="paymentType" id="a_1" value="PC" checked>
<label for="a_1">YooMoney </label>
<input type="radio" name="paymentType" id="a_2" value="AC">
<label for="a_2">Банковской картой</label>
<input type="hidden" name="sum" value="2.00" data-type="number">
<input type="hidden" name="label" value="XXX">
<input type="hidden" name="successURL" value="URL">
<input type="submit" name="submit" id="submit" value="ОПЛАТИТЬ">
</form>
· Шапка формы неизменная и соответствует требованиям yoomoney. Отправка формы на адрес страницы yoomoney методом post.
· В поле input receiver прописываем номер своего кошелька yoomoney.
· В поле input quickpay-form указываем button. Это требование документации yoomoney.
· В поля input radio для paymentType указаны PC и AC. Это выбор пользователя, оплата с кошелька yoomoney или банковской карты. Эти поля единственные, которые видит пользователь на странице вашего сайта. Здесь можно дополнить установкой id и применить тег label для красоты отображения информации. Также одно из полей можно обозначить checked. В примере это показано.
· В поле input sum вам нужно прописать сумму в рублях, которую нужно оплатить пользователю. В примере указана минимальная сумма 2 рубля. Но если вы желаете, чтобы сумма менялась, это можно сделать путем установления или вычисления суммы в коде php и подставлением в форму в тег value="" значения, путем <?php echo $_SESSION['х']; ?>.
· Поле input label считается необязательным, но здесь можно установить код или информацию необходимую вам для понимания о платеже.
· Поле input successURL, также считается необязательным, но вы можете указать на какой адрес (страницу) вашего сайта yoomoney переправит после оплаты. Не путайте URL в этом поле и URL на странице yoomoney HTTP-уведомления. Не всегда они могут быть одинаковы, но об этом мы поговорим позже. Это одно из основных моментов.
И в заключении этого шага можно порекомендовать во всех полях в тег value="" указывать значения через <?php echo $_SESSION['х']; ?>, ранее определенные или прописанные в коде php.
Шаг 2. Настраиваем HTTP-уведомление.
Страницу настройки HTTP-уведомления вы легко найдете через документацию yoomoney. Важно помнить, что ваш кошелек yoomoney, на который будете получать платежи должен быть идентифицированный.
1. В поле куда отправлять (URL сайта) необходимо прописать адрес страницы вашего сайта где находится код php обработчик. Например: https://site.com/document.php.
2. Скопировать и запомнить секрет для проверки подлинности. Мы вставим его в php обработчик.
3. Установить галочку в поле отправлять HTTP-уведомления и нажать кнопку готово.
3. Установить галочку в поле отправлять HTTP-уведомления.
4. Нажать кнопку готово.
5. Если на странице php обработчика код установлен нажмите кнопку протестировать, но это можно сделать позже. Подробнее поговорим на следующем шаге.
Шаг 3. Код php обработчика и проверки.
Код обработчика можно установить на отдельной странице или на той же где находится форма. Это не принципиально и веб-мастер решает самостоятельно.
В начале установим код для тестирования.
<?php
$a = fopen('file.txt', 'a+');
fwrite($a, print_r($_POST, true));
fclose($a);
При нажатии кнопки тестирование на странице yoomoney HTTP-уведомления, произойдет перенаправление по адресу указанному в поле куда отправлять (URL сайта). Код php откроет файл file.txt (текстовый) и запишет в него информацию полученную от yoomoney методом post. Открыв этот файл на своем хостинге вы прочитаете всю информацию переданную на обработчик. Проанализировать полученные позиции вам поможет документация yoomoney.
Если тест прошел и вы прочитали информацию в файле file.txt, можем двигаться дальше и написать основной код.
<?php
$secret_key = 'ХХХХХХХХХХХХХХХХХХХХХХХХ'; // это ваш секретный код
$sha1 = sha1($_POST['notification_type'] . '&' . $_POST['operation_id'] . '&' .
$_POST['amount'] . '&' . $_POST['currency'] . '&' . $_POST['datetime'] . '&' .
$_POST['sender'] . '&' . $_POST['codepro'] . '&' . $secret_key . '&' . $_POST['label']);
if ($sha1 != $_POST['sha1_hash']) {
echo "ошибка";
exit();
} else {
$info = 'Операция выполнена';
$notification_type = $_POST['notification_type'];
$operation_id = $_POST['operation_id'];
$amount = $_POST['amount'];
$datetime = $_POST['datetime'];
$label = $_POST['label'];
$money = $info . ':' . $notification_type . ':' . $operation_id . ':' . $amount . ':' .
$datetime . ':' . $label;
$a = fopen('file.txt', 'a+');
fwrite($a, print_r($money, true));
fclose($a);
exit();
}
Если платеж прошел, на обработчик приходит информация о платеже. Обработчик прописывает эту информацию в файл file.txt, который вы можете просмотреть.
Что бы понять работу php обработчика, давайте проследим действия пользователя при оплате и обработчика php:
· На странице формы пользователь выбирает как он будет платить либо с yoomoney кошелька, либо с банковской карты и нажимает кнопку оплатить.
· Происходит переход на страницу yoomoney, где пользователь вносит реквизиты и нажимает оплатить. После подтверждения происходит переход на основную страницу yoomoney с кнопкой вернуться на сайт.
· В тоже время HTTP-уведомление отправляет на обработчик информацию о платеже.
· Обработчик получает информацию методом post, вычисляет значение хэш-функции sha1 и сравнивает с полученным значением sha1_hash и выполняет запись в файл file.txt.
· Пользователь нажимает кнопку вернуться на сайт. Если в форме не указан URL возврата, пользователь будет перенаправлен на главную страницу сайта. Если же URL указан, то перенаправление произойдет по этому адресу.
Вот этот временной параметр имеет важную составляющую, что же прописать в обработчике php. Таким образом, появляются две системы управления одна это ваш сайт, другая – yoomoney.
Результатом решения данной задачи является то, что пользователь при оплате перенаправляется на нужный адрес, где он выполняет последующие действия, а у веб-мастера инструмент прослеживания оплат.
Rutube = https://rutube.ru/channel/35579739/
Dzen = https://dzen.ru/sitekanal
Telegram = https://t.me/sitekanal
ВКОНТАКТЕ = https://vk.com/club225748759
Одноклассники =
https://ok.ru/group/70000033132686 https://ok.ru/group/70000033176974
Youtube =
https://youtube.com/@studiomakeawebsite?si=Xn8tyVHpsfAg2Vu6
Студия “Сделай сайт”. Email: asidadost@yandex.ru
ПОМОЩЬ КАНАЛУ =
https://webforgevld.ru/pages/page_11.php
Готовый код можно скачать по адресу: https://webforgevld.ru/download_code.php