Всем здравия!
Настраиваю на своем сайте авторизацию через WebMoney
Пользуюсь статьей http://owebmoney.ru/...les/login.shtml
очень подробная инструкция, но у меня встала проблема с параметром "WmLogin_AuthType"
Подробно:
В самом начале появлялась проблема со сравнением 'WmLogin_UrlID']==$urlid, потом обнаружил, что urlid, который получил при регистрации на сайте Вебмани написан заглавными буквами, а WmLogin_UrlID система выдает маленькими. После недолгих мучений проблема была решена
IF(!$_POST['WmLogin_WMID']) {echo "Вы не авторизованы!<br>"; echo "<A href=https://login.wmtransfer.com/GateKeeper.aspx?RID=".$urlid."&lang=ru-RU>авторизоваться</A>"; } ELSE { $testticket=preg_match('/^[a-zA-Z0-9\$\!\/]{32,48}$/i', $_POST['WmLogin_Ticket']); if($_POST['WmLogin_UrlID']==$urlid && $testticket==1) { echo "=== Тикет получен успешно === <br>";
В итоге: "=== Тикет получен успешно === <br>" идем дальше.
// Формируем запрос для проверки тикета $xml=" <request> <siteHolder>$mywmid</siteHolder> <user>".$_POST['WmLogin_WMID']."</user> <ticket>".$_POST['WmLogin_Ticket']."</ticket> <urlId>$urlid</urlId> <authType>".$_POST['WmLogin_AuthType']."</authType> <userAddress>".$_POST['WmLogin_UserAddress']."</userAddress> </request> "; // Отправляем запрос и получаем ответ $resxml=_GetAnswer($xml); // Разбираем XML-ответ $xmlres = simplexml_load_string($resxml); if(!$xmlres) echo "Не получен XML-ответ"; $result=strval($xmlres->attributes()->retval); // Если результат не равен 0 - прерываем и выдаем ошибку if($result!=0) echo "Тикет ошибочный :("; else { echo "Тикет верный :) Вы авторизованы!<br>"; echo "Ваш WMID - ".$_POST['WmLogin_WMID']."<br>";
В ходе инструкции никаких изменений не требуется, кроме того, что изначально я подставил 3 своих параметра, которые мне выдала Система. Точнее 2 параметра и путь к сертификату.
Запускаю скрипт и получаю в ответ: "Тикет ошибочный :("
Начинаю разбирать где я ошибся.
// Отправляем запрос и получаем ответ $resxml=_GetAnswer($xml);
работает. дальше.
$xmlres = simplexml_load_string($resxml); if(!$xmlres) echo "Не получен XML-ответ";
Такого ответа я не получаю, значит $xmlres имеется в наличии
$result=strval($xmlres->attributes()->retval); // Если результат не равен 0 - прерываем и выдаем ошибку if($result!=0) echo "Тикет ошибочный :(";
Вывожу $result на экран и вижу: 1. https://login.wmtran...?slug=WS_Result говорит:
1Неверные аргументы
Вопрос! Почему? Идем дальше, проверяю состав xml запроса:
<request> <siteHolder>$mywmid</siteHolder> <user>".$_POST['WmLogin_WMID']."</user> <ticket>".$_POST['WmLogin_Ticket']."</ticket> <urlId>$urlid</urlId> <authType>".$_POST['WmLogin_AuthType']."</authType> <userAddress>".$_POST['WmLogin_UserAddress']."</userAddress> </request>
вывожу на экран
print "WmLogin_WMID: ".$_POST['WmLogin_WMID']."<br>"; print "WmLogin_Ticket: ".$_POST['WmLogin_Ticket']."<br>"; print "WmLogin_AuthType: ".$_POST['WmLogin_AuthType']."<br>"; print "WmLogin_UserAddress: ".$_POST['WmLogin_UserAddress']."<br>";
Вижу на экране
WmLogin_WMID: 300584632018 WmLogin_Ticket: k9xW44TwK5hHLyo59j6DUGfypEfkA8uprEjWNruvS1DbC4nL WmLogin_AuthType: WmLogin_UserAddress: 178.90.110.125
WmLogin_AuthType: - а в ответ тишина.
Логично предположить, что login.webmoney не прислал мне его изначально, отчего xml запрос ушел неполным, ответ получен (проверено) пустой, $result!=0 и в результате:
echo "Тикет ошибочный :(";
РЕБЯТА!!!! ЛЮДИ ДОБРЫЕ!!!! вопрос к вам!
Где? Где я ошибся? Где накосячил?
2 дня маюсь, все перепроверил, все форумы прочитал, весь гугл илазил!
Памагитееееееее!!!!!!