Перейти к содержимому


300584632018

Регистрация: 09 фев 2015
Не в сети Активность: фев 15 2015 19:41
-----

Мои темы

Помогите настроить авторизацию на сайте через login.wmtransfer.com

09 февраля 2015 - 10:50

Всем здравия!

 

Настраиваю на своем сайте авторизацию через 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:&nbsp;".$_POST['WmLogin_WMID']."<br>";
print "WmLogin_Ticket:&nbsp;".$_POST['WmLogin_Ticket']."<br>";
print "WmLogin_AuthType:&nbsp;".$_POST['WmLogin_AuthType']."<br>";
print "WmLogin_UserAddress:&nbsp;".$_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 дня маюсь, все перепроверил, все форумы прочитал, весь гугл илазил!

Памагитееееееее!!!!!!