На одном проекте решили прикрутить форму оплаты Робокассы, в которой юзер самостоятельно вводит номер заказа и сумму оплаты, после нажатия а кнопку «оплатить» пользователь попадает на сайт robokassa и там уже вводит данные карты. Сразу скажу, что можно передавать и телефоны и e-mail и т.д., но нам этого не надо. В Интернете полно вопросов и ответов,но все не то, вернее либо для программистов, либо предлагают за деньги. Но я то не программист и платить не люблю))) Тем более есть еще несколько проектов куда пойдет форма, значит надо разобраться.
Итак начнем:
Процесс регистрации на Робокассе не буду описывать, единственное что в технических настройках магазины выбрал: Метод отсылки данных по Result Url: свой почтовый ящик, метод отсылки данных Success и Fail: Post (хотя просто указал статические страницы, которые показываются пользователю при успешной оплате или ошибке.
На сайте робокассы есть решение, которое на вид рабочее, если не вводить произвольных сумм или номеров счетов. При изменении данных параметров сумму MD5 не формируется с учетом введенных данных и мы получаем разные ошибки при переходе на страницу оплаты робокассы.
На одном из сайтов нашел решение, которое почти сработало, просто пришлось для себя его пилить и убирать ненужные операции кодирования, которые давали ошибку.
1. Мы помещаем на страницу с оплатой код формы для ввода данных пользователем. Для меня это номер заказа и сумма оплаты:
<form action="https:site/action.php" method="POST"> <div class="col-sm-10"><input type="number" name="name" placeholder="Номер заказа" required></div> <div class="col-sm-10"><input type="text" name="price" placeholder="Сумма платежа, руб." required></div> <input type=submit value='Оплатить'> </form>
В коде выше: https:site/action.php это путь к обработчику на вашем сайте, который мы создадим в следующем шаге. input type=»number» name=»name» и input type=»text» name=»price» это наши параметры, которые вводит пользователь в форму. Оформляем форму как больше нравится, на вкус и цвет.
input type=submit value=’Оплатить’ — это наша кнопка, которая подтверждает отправку формы и запускает обработчик. Если введенные данные в форме присутствуют и соответствуют требованиям, то после пользователь попадает на страницу оплаты робокассы с суммой и номером заказа, которые он указал.
2. Создаем файл обработчика «action.php» по адресу, указанному в шаге выше, следующего содержания:
<?php if(!empty($_POST["name"]) && !empty($_POST["price"]) ){ // если был пост и переданы данные $name = trim(htmlspecialchars(strip_tags($_POST["name"]))); // принимаем параметры с формы и присваиваем их значения переменным $price = trim(htmlspecialchars(strip_tags($_POST["price"]))); // принимаем параметры с формы и присваиваем их значения переменным $mrh_login = "Идентификатор вашего магазина"; // идентификатор магазина $mrh_pass1 = "Пароль1"; // пароль #1 $inv_id = $name;//номер счета: присваиваем значение переменной $name для переменной $inv_id, чтобы передать в робокассу и сформировать signature $inv_desc = "Оплата заказа ".$name; // описание заказа с дописывание номера заказа из формы $out_summ = $price; // сумма оплаты: присваиваем значение переменной $price для переменной $out_summ, чтобы передать в робокассу и сформировать signature $shp_item = 1; // тип товара. необязательное поле $in_curr = ""; // предлагаемая валюта платежа. необязательное поле $culture = "ru"; // язык. необязательное поле $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item:shp_names=$name"); // формирование подписи // Перенаправляем пользователя на страницу оплаты Header("Location: https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=$mrh_login&OutSum=$out_summ&InvId=$inv_id&IncCurrLabel=$in_curr". "&Desc=$inv_desc&SignatureValue=$crc&Shp_item=$shp_item". "&Culture=$culture&shp_names=$name"); } ?>
На что нужно обратить внимание:
Сам потратил 3 дня на поиски, но вот заработало!
Всем добра и чтоб росла борода!
Всем привет! Недавно начал баловаться видеомонтажом для роликов в ютуб и соцсети. Честно, много искал…
Всем привет!Новый день - новая задача: В последнее время стало появляться много чатов открытых с…
Всем привет!Пишу крайне редко, а жаль, есть что написать но времени как обычно....Ну да ладно,…
Всем привет! Каждый раз разворачивая сайт для себя или кого-то на worpdress или opencart или…
Всем привет! Возникла идея и задача: чтобы привлечь подписчиков на сайте запустили опрос-исследование для профессиональных…
Всем привет! Недавно озадачился поисками бесплатных ресурсов для размещения телеграмм бота (решил поиграть попробовать) и…