Нужна помощь с кодом робокассы

12
A
На сайте с 02.08.2009
Offline
95
4204

Здравствуйте, уважаемые форумчане. Прошу Вашей помощи - у самого уже голова пухнет. Есть кусок кода:

<?

// регистрационная информация (логин, пароль #1)
// registration info (login, password #1)
$mrh_login = "XXX";
$mrh_pass1 = "XXXX";

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

// описание заказа
// order description
$inv_desc = "Recharge your account in Demo Billing";

// сумма заказа
// sum of order
$out_summ = "";

// тип товара
// code of goods
$shp_item = "3";

// предлагаемая валюта платежа
// default payment e-currency
$in_curr = "PCR";

// язык
// language
$culture = "ru";

// формирование подписи
// generate signature
$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");

// форма оплаты товара
// payment form
print "<html>".
"<form action='http://test.robokassa.ru/Index.aspx' method=POST>".
"<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=hidden name=Desc value='$inv_desc'>".
"<input type=hidden name=SignatureValue value=$crc>".
"<input type=hidden name=Shp_item value='$shp_item'>".
"<input type=hidden name=IncCurrLabel value=$in_curr>".
"<input type=hidden name=Culture value=$culture>".
"<input type=submit value='Перейти к оплате'>".
"</form></html>";
?>

При отправке формы вылетает следующая ошибка:

Введите параметр OutSum :

Вопрос: Как сделать так, чтобы значение параметра можно было указывать вручную перед отправкой формы в специальном поле?

Заранее спасибо! Башка уже трещит :mad:

Ink-developer
На сайте с 31.01.2009
Offline
138
#1

Вам бы действительно отдохнуть :)

Собственно в чем вопрос? Вы что не знаете, как создать поле для ввода?

hidden заменить на text

A
На сайте с 02.08.2009
Offline
95
#2

Если hidden заменить на text, тогда получаю другую ошибку:

Неверное значение "660e03220f9cf563ff1b91e602cbd2a3" для параметра "SignatureValue". Правильное значение - 351bf2ffaf282f66d08772833be91555. Кодировка: windows-1251.

Как я понял, MD5 формируется в этой строчке:

$crc  = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");

но что с ним делать, понятия не имею. Перерыл уже весь инет :)

Ink-developer
На сайте с 31.01.2009
Offline
138
#3

Копаться и выкидывать рабочий код сейчас лень, да и стимула нет, но принцип поясню.

Делаешь форму ввода, где пользователь вводит все необходимое, жмет отправить и все это уже попадает в форму, которую ты выложил методом POST получаешь все данные и уже эту форму отправляешь в робокассу, желательно яваскриптом, чтоб пользователь лишний раз не напрягался.

Конец формы </form> после вставить:

<script type='text/javascript'>document.submit_form.submit();</script>

Чтобы скрипт сработал форма должна получит имя:

<form name='submit_form'

Тут я описал исчерпывающе как все это реализовать, от тебя только дело техники :)

A
На сайте с 02.08.2009
Offline
95
#4

Ничего не понял. Видимо, моим мозгам еще рано на покой

Вот форма с миралинкса:

<form onsubmit="return roboCheckForm(&quot;wmr&quot;);" style="margin:0px; padding:0px;" id="RobokassaWMRRefill" method="post" action="https://merchant.roboxchange.com/Index.aspx"><fieldset style="display:none;"><input type="hidden" name="_method" value="POST" /></fieldset>					<table cellspacing="10" width="50%" style="margin:0 auto;">

<tr>
<td></td>
<td>
<input type=hidden name=MrchLogin id="mrchLogin_wmr" value="miralinks">
</td>
</tr>
<tr>
<td>Введите сумму для пополнения (WMR): </td>
<td><input type="text" name="OutSum" value="" align="right" style="text-align:right;" id="robo_amount_wmr" onkeyup="roboCountMoney('wmr');"></td>
</tr>
<tr>
<td></td>
<td>
<input type=hidden name=InvId id="invId_wmr" value="0">
<input type=hidden name=SignatureValue id="signatureValue_wmr" value="">
<input type=hidden name=shp_HashKey id="hashKey" value="">
<input type=hidden name=shp_UsId id="userId_wmr" value="ХХХ">
<input type=hidden name=Desc id="description_wmr" value="Пополнение счета Miralinks">
<input type=hidden name=IncCurrLabel id="IncCurrLabel_wmr" value="WMR"></td></tr>
<tr>
<td>Получите на счет: </td>
<td align="right"><span id="robo_realmoney_wmr" style="font-weight: bold;">&nbsp;</span></td>
</tr>
<tr>
<td colspan="2"><p>Платеж обрабатывается сервисом Робокасса. При переходе на сайт Robokassa вы увидите сумму с комиссией этого сервиса.</p></td>
</tr>
<tr>
<td colspan="2" align="center">
<input class="sbm1" type="submit" value="Перейти к оплате">
</td>
</tr>
</table>
</form>

И она тоже выдает ошибку с MD5

RT
На сайте с 07.04.2008
Offline
56
#5

так как в поле у тебя значение OutSum меняется, то и в поле SignatureValue должно меняться, так как данные там записываются отсюда $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); как видишь там присутствует $out_summ значение которого изменилось, это твоя причина ошибки, а как сделать примерно Ink-developer описал.

Студия «Дз» (http://dddzzz.ru/) — создание сайтов, графический дизайн
A
На сайте с 02.08.2009
Offline
95
#6

Попробовал, вроде как Ink-developer писал. Взял форму из Миралинкса, поставил после нее указанный скрипт. В итоге после попадания на страницу с размещенной формой автоматом редиректит на робокассу и при этом вижу все ту же ошибку "Неверное значение "" для параметра "SignatureValue". Правильное значение - 4201d7ccd62ccd6638663e7738d10ffd. Кодировка: utf-8"

Все равно не понимаю

RT
На сайте с 07.04.2008
Offline
56
#7

1 форма - поле для выбора суммы

2 форма которую вы приводили

После выбора суммы по форме 1, перенаправляется на форму 2 в которую уже вставляется сумма которую изменить нельзя.

Заменяете эту строчку

// сумма заказа

// sum of order

$out_summ = "";

на

// данные которые пришли с первой формы

// сумма заказа

// sum of order

$out_summ = $_POST["out_summ"];

остальное как в первом сообщении.

Ink-developer
На сайте с 31.01.2009
Offline
138
#8

Что непонятного? Я же написал, чтобы твой скрипт работал тебе методом POST необходимо передать в него все данные, которые учувствуют в скрипте.

Если знаешь PHP то я более чем детально описал, если не знаешь то эта задача будет не по зубам, так как обработать после оплаты данные и зафиксировать факт оплаты, еще сложнее. Значит тебе необходимо заказать разработку скрипта или еще месяцок изучения сайтостроения.

A
На сайте с 02.08.2009
Offline
95
#9

Можно пример сайта, где реализована эта схема?

Ink-developer
На сайте с 31.01.2009
Offline
138
#10

Гогетлинкс пополнение баланса, но вся сложность в php, а его вы не увидите.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий