Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Прием платежей через ROBOKASSA


Автор: Cript777 28.5.2013, 20:02
Приветствую! Кто знаком с этой системой? Уже столько всего прочитал, все ровно ничего не получается..

Вот код отправки запроса на их сайт

Код

// сумма заказа
// sum of order
$out_summ = $_POST['out_summ'];
$username=$_SESSION['username'];
?>
<center><br>Пополнение счета <? echo $username;?> на сумму <b><? echo $out_summ;?> Рублей</b><br><br>
<? 
// регистрационная информация (логин, пароль #1)
// registration info (login, password #1)
$mrh_login = "---";
$mrh_pass1 = "---";
// номер заказа
// number of order
$inv_id = 0;
// описание заказа
// order description
$inv_desc = "Оплата счета";
// тип товара
// code of goods
$shp_item = "2";
// предлагаемая валюта платежа
// default payment e-currency
$in_curr = "";
// язык
// 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='https://auth.robokassa.ru/Merchant/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=hidden name=username value='$username'>".
   "<input type=submit value='Пополнить'>".
   "</form></html>";
   "<center><br>";



В result.php 

Код

<? 
$db = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die ("Could not connect to the database");
@mysql_select_db("$dbname", $db) or die ("Could not select the database");

// as a part of ResultURL script

// your registration data
$mrh_pass2 = "---";   // merchant pass2 here
// HTTP parameters:
$out_summ = $_POST["OutSum"];
$username = $_POST["username"];
$inv_id = $_POST["InvId"];
$crc = $_POST["SignatureValue"];
// HTTP parameters: $out_summ, $inv_id, $crc
$crc = strtoupper($crc);   // force uppercase

// build own CRC
$my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2"));

if (strtoupper($my_crc) != strtoupper($crc))
{
  echo "bad sign\n";
  exit();
}

// print OK signature
echo "OK$inv_id\n";

// запрос к бд..
$username = $_POST['username'];
$statsq = mysql_query("select * from _users where username = '".$username."' ");
$statsr = mysql_fetch_array($statsq); 
$money = $statsr['balance'];
//и т.п..
?>


Что делаю не так? По моему параметр username просто не передается.. Как сделать правильно?..

Автор: Arantir 28.5.2013, 20:26
Цитата(Cript777 @  28.5.2013,  19:02 Найти цитируемый пост)
Уже столько всего прочитал, все ровно ничего не получается..

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

http://robokassa.ru/ru/Doc/Ru/Interface.aspx#223
Цитата

Параметры запроса (метод POST либо GET): 

MrchLogin=sMerchantLogin&
OutSum=nOutSum&
InvId=nInvId&
Desc=sInvDesc&
SignatureValue=sSignatureValue
IncCurrLabel=sIncCurrLabel&
Email=sEmail&
Culture=sCulture
[&shpa=yyy&shpb=xxx...-пользовательские_параметры_начинающиеся_с_SHP_в_сумме_до_2048_знаков]
Цитата

При инициализации оплаты, вы можете передать дополнительные параметры, которые необходимы для работы вашего магазина. Переданные дополнительные параметры будут возвращены скриптам магазина по Result Url, Success Url и Fail Url. 
Наименование дополнительных параметров должно ОБЯЗАТЕЛЬНО начинаться с "SHP" в любом регистре. 
Например: Shp_item, SHP_1, ShpEmail, shp_oplata, ShpClientId и т.д. 

Автор: Cript777 28.5.2013, 21:50
Цитата(Arantir @  28.5.2013,  20:26 Найти цитируемый пост)
Наименование дополнительных параметров должно ОБЯЗАТЕЛЬНО начинаться с "SHP" в любом регистре. 
Например: Shp_item, SHP_1, ShpEmail, shp_oplata, ShpClientId и т.д. 


Заменил все как надо 
Код

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

      ...

   "<input type=hidden name=Shp_username value='$username'>".



В результе я так понимаю только это меняется? Подпись не меняется?
Код

$username = $_POST["Shp_username"];


Однако проделав все это баланс пользователя не обновляется..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)