Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не понятности с подключением ROBOKASSA Как такое возможно.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gheka
Отправлено: 21 Декабря, 2011 - 01:22:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Здравствуйте ест скрипт магазина подключаю к нему ROBOKASSA но тут возникла проблема которую сам не могу решить, так как не пойму как может один md5 хеш быть равным с другим md5 хеш.
Вот описание на сайте ROBOKASSA. Небольшая выдержка:

sMerchantLogin - login магазина в обменном пункте(обязательный параметр)

nOutSum - требуемая к получению сумма.

nInvId - номер счета в магазине

sSignatureValue - контрольная сумма MD5(обязательный параметр) - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей следующие параметры, разделенные ':', с добавлением sMerchantPass1 - (устанавливается через интерфейс администрирования): sMerchantLogin:nOutSum:nInvId:sMerchantPass1[:пользовательские параметры, в отсортированном алфавитном порядке]

Файл RESULT

В случае успешного проведения оплаты робот системы проводит запрос по Result URL, с указанием следующих параметров (методом, выбранным в настройках):

OutSum=nOutSum&
InvId=nInvId&
SignatureValue=sSignatureValue


nOutSum
-полученная сумма.
nInvId
- номер счета в магазине
sSignatureValue
- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass2 - (устанавливается через интерфейс администрирования) т.е. nOutSum:nInvId:sMerchantPass2

Скрипт, находящийся по Result URL должен проверить правильность контрольной суммы и соответствия суммы платежа ожидаемой сумме. При формировании строки подписи учтите формат представления суммы (в строку при проверке подписи вставляйте именно полученное значение, без какого-либо форматирования).

Факт успешности сообщения магазину об исполнении операции определяется по результату, возвращаемому системе. Результат должен содержать "OKnMerchantInvId", т.е. для счета #5 должен быть возвращен текст "OK5".

Вот тестовый код для примера.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. // Данные для 1 хеша
  4. $mrh_login = "tester";                          // Логин в робочанге
  5. $out_summ = "0.1";                             // Сумма платежа в wmz
  6. $inv_id = "123";                                   // Номер счёта
  7. $mrh_pass1 = "uy4n2vo§3EZC6RZs";    // Пароль 1
  8.  
  9. // Формируем 1 md5 хеш из параметров указанных ниже
  10. $crc = strtoupper (md5 ( "$mrh_login:$out_summ:$inv_id:$mrh_pass1" ));
  11.  
  12.  
  13. // Данные для хеша  Result                      
  14. $out_summ = "0.1";                             // Сумма платежа в wmz
  15. $inv_id = "123";                                   // Номер счёта
  16. $mrh_pass2 = "uy4n2vo§3EZC6RZs";    // Пароль 2
  17.  
  18. // Формируем полученные данные в md5 хеш
  19. $my_crc = strtoupper ( md5 ( "$out_summ:$inv_id:$mrh_pass2" ) ); echo '<br />';
  20.  
  21. //Проверяем 2 хеша
  22. if ($my_crc != $crc) {
  23.         echo "bad sign\n";
  24.         exit ();
  25. }
  26.  
  27. // признак успешно проведенной операции
  28. // success
  29. echo "OK$inv_id\n";
  30.  
  31.  
  32. И и при этом естественным образом получаются 2 разных md5 хеша
  33.  



696AFF191E13FA6B2F95E80D29AEDCE5
E1127DECE358AFD01535165D48E6B9F5

Ответ проверки bad sign

Как так может быть чтобы они оказались одинаковыми? или я что то не правильно понял?

Подскажите как правильно должно быть что я упустил?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB