Задать вопрос
@alansbor

Получить переменные до отправки формы :: Robokassa — бег впереди поровоза?

Приветствую Всех!

Изучил робокассу на предмет вставки своих параметров для отправки и оказалось, что для того что бы отправить форму, нужно сначала узнать хэш неких данных. В итоге покапал javascript на предмет замещения переменных перед отправкой. Не получается. Есть конечно вариант отправить на своем сайте на отдельную страницу и там посчитать md5, но ведь не камильфо как то. Должно быть: 1. Заполняем поля. 2. Считаем md5 перед отправкой формы в последовательности описанной в коде ниже. 3. Отправляем форму.

--------------
<?
// регистрационная информация (Идентификатор магазина, пароль #1)
// registration info (Merchant ID, password #1)
$mrh_login = "AlanSbor.com";
$mrh_pass1 = "FDGHJGIUTYFHGFKG"; // пароль не рабочий - для теста

// номер заказа
// number of order
$inv_id = 0;

// $inv_desc = "Техническая документация по ROBOKASSA";
// Получаем с предыдущей страницы

//echo $_GET['id_d'];
//echo '<br>';
//echo $_GET['sum'];

if ($_GET['sum'] == 500)
    $inv_desc = 'Оплата поиска компонентов за 48 часов [500  рублей]';
if ($_GET['sum'] == 1000)
    $inv_desc = 'Оплата поиска компонентов за 24 часа [1000 рублей]';
    
    // сумма заказа
    // sum of order
    // $out_summ = "8.96";

$out_summ = $_GET['sum'];

// тип товара
// code of goods
// Должны получить из формы

// $shp_item = 1;
// $shp_gorod_index = "";

// кодировка
// encoding
$encoding = "utf-8";

// Адрес электронной почты покупателя
// E-mail
// Должны получить из формы
// $Email = "";

// $Shp_chto_ishem = '';

//$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:$Shp_gorod_index:$Shp_chto_ishem");
// Здесь должны получить, значение md5 - но не получаем :(
$crc = md5($Shp_text);

// Для теста проверяем md5 
$Str = md5(iconv('CP1251','UTF-8',"AlanSbor.com:500:0:FDGHJGIUTYFHGFKG:111111111111111:Ищем то что нам нужно"));

//$Shp_str_text = "$mrh_login:$out_summ:$inv_id:$mrh_pass1:$Shp_gorod_index:$Shp_chto_ishem";

// форма оплаты товара
// payment form
//print "<html>" . "<form action='https://auth.robokassa.ru/Merchant/Index.aspx' method=POST>".

print 
"<html>" .
"<form action='test.php' method=POST name='form1'>" .
"<input type=hidden name=MrchLogin value='$mrh_login'>" . 
"<input type=hidden name=OutSum value='$out_summ'>" . 
"<input type=hidden name=InvId value='$inv_id'>" . 
"<input type=text name=Desc value='$inv_desc'>" . 
"<input type=hidden name=SignatureValue value='$crc'>" .
"<input type=text name=Email value='$Email'>" .
"<input type=text name=Shp_gorod_index value='$shp_gorod_index'>" . 
"<input type=text name=Shp_chto_ishem value='$shp_chto_ishem'>" .
"<input type=hidden name=Shp_Str value='$Str'>" .
"<input type=hidden name=Shp_text value='$Shp_text'>" .

"<input type='submit' value='Оплатить'>" . "</form>";

print
"
<script>
var f = document.forms.form1;
f.onsubmit = function()
{
    var Shp_str_text_1 = f.mrh_login.value;
    var Shp_str_text_2 = f.out_summ.value;
    var Shp_str_text_3 = f.inv_id.value;
    var Shp_str_text_4 = f.mrh_pass1.value;
    var Shp_gorod_index = f.Shp_gorod_index.value;
    var Shp_chto_ishem = f.Shp_chto_ishem.value;

<?
// По задумке javascript должен до отправки формы сформировать $Shp_text
?>
    var
    Shp_text =
    Shp_str_text_1+':'+
    Shp_str_text_2+':'+
    Shp_str_text_3+':'+
    Shp_str_text_4+':'+
    Shp_gorod_index+':'+
    Shp_chto_ishem;

    f.Shp_text.value = Shp_text;
}
</script>
";
print"</html>";
?>
  • Вопрос задан
  • 504 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@1mastodon1
ну можно сгенерировать на фронт-энде, наверное
www.myersdaily.org/joseph/javascript/md5-text.html
Ответ написан
@dmitryKovalskiy
программист средней руки
Все что вам нужно - на основании документации сформировать md-5 подпись к вашей форме. Хотите это сделать на клиенте перед отправкой формы? Ради бога - любым удобным вам способом. Хоть аяксом шлите на сервер запрос - посчитай мне md-5 по этим параметрам.
Ответ написан
@Silm
А ключ для шифрования вы тоже собрались на клиент отдавать?

Делайте на сервере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы