Парсим инфу о WMID
Парсим инфу о WMID
В этой статье распишу этот парсер в двух вариантах его исполнения. Думаю, статья будет актуальна, т.к. старые парсеры перестали работать из-за изменений в коде страниц на passport.webmoney.ru

Итак, рассмотрим вариант функции, парсящий с исходника сервера webmoney:
<?PHP
# Вункция парсер #
function return_wmid($wm)
{
        $purse = file_get_contents("http://passport.webmoney.ru/asp/certview.asp?purse=".$wm);
        $parser = explode("WMID#",$purse);
        $parser = substr($parser[1],0,12);
        
        if(ereg("^[0-9]{12}$", $parser))
        {
        RETURN $parser;
        }else{
        RETURN FALSE;
        }

}
# ! Функция парсер #
?>

Он устарел. Даже вернее не он устарел, а изменился исходный код сервера. Изменился незначительно, просто исчез символ #. Вот вариант в принципе исправленной функции:
<?PHP
# Вункция парсер #
function return_wmid($wm)
{
        $purse = file_get_contents("http://passport.webmoney.ru/asp/certview.asp?purse=".$wm);
        $parser = explode("WMID",$purse);
        $parser = substr($parser[1],0,12);
        
        if(ereg("^[0-9]{12}$", $parser))
        {
        RETURN $parser;
        }else{
        RETURN FALSE;
        }

}
# ! Функция парсер #
?>

Сохраните в файл returnwmid.php и влейте на хост

Теперь, как её использовать:
1. В register.php ищем в коде $pemail=$_POST["pemail"];
2. Рядом с кодом ищем $wmid=$_POST["wmid"];
3. Меняем на:
require('returnwmid.php');
$wmid=return_wmid($pemail);

функция вернёт нам WMID. Значит следом в HTML коде можно просто убрать код поля для ввода WMID

Функция старая, взял копипастом с МФС'а да и влом было накидывать парсер снова. Работать будет до тех пор, пока WM не поменяют исходник снова. Но это не дело - получать WMID по номеру кошелька с такими трудами вообще глупо, в частности, когда мы тупо парсим с HTML кода, имейте в виду - WM когда-нить психанут и запретят функцией парсить у них код.

А сейчас разберём более совершенный вариант. Даже наверное более быстрый. Использовать file_get_contents не будем. На денвере вариант не прокатит (прокатит на свежих версиях денвера, где есть CURL)

Итак, мы имеем URL: https://passport.webmoney.ru/xml/XMLGetWMIDInfo.aspx
Ну на неё нам надо отправить POST запрос с номером кошелька. Запрос будет передавать наши параметры. Имеет вид он:
<request><purse>номер кошелька</purse></request>

Отправить POST запрос нам поможет в данном случае CURL.

Распишем функцию (комментарии имеются)
function return_wmid($purse) {
$request="<request><purse>$purse</purse></request>"; //запрос
$url="https://passport.webmoney.ru/xml/XMLGetWMIDInfo.aspx"; //URL куда мы его посылаем
$ch = curl_init($url); //CURL запустись.Ниже мы его настроим...
curl_setopt($ch, CURLOPT_HEADER, 0); //заголовки не отправляем
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //вернём ответ
curl_setopt($ch, CURLOPT_POST,1); //запрос у нас POST а не GET
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); //запрос то POST - но тут мы зададим что мы что либо передаём
$result=curl_exec($ch); //результат курлятской работы
$xmlres = simplexml_load_string($result); //симпл принимай эстафету
$wmid=$xmlres->certinfo->wmids->row[wmid];
return $wmid;
}

Что мы использовали:
1. simpleXML (в php 5 он выродился и о чудо - мы его использовали, правда всего лишь один раз, разобрав полученные XML теги в массив)
2. CURL - отправка запроса (ну на хостах без php 5 и курла вообще не вариант жить, поэтому у всех это есть.
3. Голову - если голова не варит - пьём ягуар. Если же не помогло - опустошаем вторую банку. Если вообще не помогает - кидаем пять банок мне (можно 3, смотря в каком состоянии я) и голова заработает у меня и работать будет на Вас.

Да и кстати, в скрипте использовать так же, как и использовали функцию с парсером из кода.

Всё... Чуток попозже распишу побольше функций, а сейчас напоследок можем внести изменения в функцию с курлом, это на сладкое, кто захочет...

Порядок изменения:
1. Переименуем функцию в её коде (для тех кто в танке) можно просто заменить return_wmid на return_bl или return_goods или же return_bads.
2. Переименовали функцию - ищем строку:
$wmid=$xmlres->certinfo->wmids->row[wmid];

Возник вопрос - нахера нам это? В это нам не нужно. Хотя если кто-то захочет замудрить что-либо - тогда пожалуйста. К примеру, запрет реги пользователям с претензией.Так вот для этого и распишу, что мы можем выудить из всех плясок с шаманским бубном.

Итак, строку выше мы можем поменять на:
$wmid=$xmlres->certinfo->wmids->row[level];

тогда обозванная новым именем(!) функция будет возвращать нам не WMID по кошельку, а BL.

Для записей в арбитраже уже повеселее.

Для положительных (зелёненьких):
$wmid=$xmlres->certinfo->claims->row[posclaimscount];

Ну и для отрицательных та же самая строка, только posclaimscount меняем на negclaimscount, соответственно, для вывода даты последней записи в арбитраже можем posclaimscount поменять на claimslastdate.

Ну для аттестата тоже не скучно. Строку, над которой в функции экспериментируем меняем на:
$wmid=$xmlres->certinfo->attestat->row[typename];

Так мы получим название аттестата, но увы, оно без заглавных букв. Тут уже ковыряйтесь сами.

Хотим тип аттестата? Да не проблема:
$wmid=$xmlres->certinfo->attestat->row[tid];

А далее полученный после функции результат просто через switch прогоните. Это пригодится:
<tid id="100">псевдонима</tid>
<tid id="110">формальный</tid>
<tid id="120">начальный</tid>
<tid id="130">персональный</tid>
<tid id="135">продавца</tid>
<tid id="136">capitaller</tid>
<tid id="140">разработчика</tid>
<tid id="150">регистратора</tid>
<tid id="170">гаранта</tid>
<tid id="190">сервиса wmt</tid>
<tid id="200">сервиса wmt</tid>
<tid id="300">оператора</tid>

Ну а для инфы о ФИО уже посложнее будет, т.к. если у WMID не показывается в passport.webmoney.ru, значит пользователь запретил показывать свои ФИО, следовательно XML вернёт нам пустоту.

Картинки аттестатов можно также спарсить, хотя хз зачем они нужны. Поэтому расписывать не буду, догадаться можно. Подсказка: либо парсим картинки с XML запроса, либо по tid аттестата тупо выводим через тот же свитч.

И на сладенькое - https://passport.webmoney.ru/asp/certcard.asp?id=WMID,вместо WMID вписать свой.

Можно запарсить и сделать в виде визитной карточки без надписи "информация о WMID", ну это уже чтобы не мучаться с XML парсерами.

В общем то всё, надеюсь, статья оказалась информативной... Ещё одну интересную и более познавательную получите позже, когда я уже решу, что она того стоит...

P.S. Не можете продвинуть сайт в поисковых системах? Значит вам нужна оптимизация сайта, с помощью которой ваш сайт повысится в глазах поисковых систем.


Рубрика: Бесплатное » Дополнения   |   Автор: Alex   |   Просмотры: 8555
Комментариев: 18
Публикаций: 3
ICQ: 3999520
- 4 +
  Автор: Buxon   |   Группа: Пользователи   |   Дата: 02 октября 2011  
Отличная статья wink
Комментариев: 46
Публикаций: 3
ICQ: 410072554
- 21 +
  Автор: westsergius   |   Группа: V.I.P.   |   Дата: 02 октября 2011  
Грамотей блин
<?PHP
# Вункция парсер #
wink
Комментариев: 171
Публикаций: 10
ICQ: 616654741
- 309 +
  Автор: pushok   |   Группа: V.I.P.   |   Дата: 02 октября 2011  
прикол в том что TL в этом XML запросе даже и близко не имеется, поэтому его парсить нужно отдельным запросом fellow
Комментариев: 338
Публикаций: 169
ICQ: 650073308
- 291 +
  Автор: Alex   |   Группа: Пользователи   |   Дата: 02 октября 2011  
прикол в том,что я разобрал на примере только этой лазейки за данными в вм.

тл и бл я парсю вообще с других урлов,как и арбитраж(отзывы и претензии)
Комментариев: 240
Публикаций: 6
ICQ: 573235722
- -896 +
  Автор: VELIK505   |   Группа: Программисты   |   Дата: 02 октября 2011  
XML интерфейс X8 и прочие уже не актуалены?
Комментариев: 338
Публикаций: 169
ICQ: 650073308
- 291 +
  Автор: Alex   |   Группа: Пользователи   |   Дата: 02 октября 2011  
Цитата: VELIK505
XML интерфейс X8 и прочие уже не актуалены?

честн гря я по хмл не шарю по вебманевским ваще.и даже не заморачиваюсь,проще денег отдать тому,кто чисто вмовскими и занимается

да и х8 не принесёт вроде такую инфу и подключать вроде его надо.я хз

этот проще и быстрее,т.к. вмсигнер не придётся подрубать и трахаццо с ключами от кипера)
Комментариев: 83
Публикаций: 3
ICQ: 423459532
- 267 +
  Автор: steam   |   Группа: Модераторы   |   Дата: 02 октября 2011  
Alex,
пригодились те вмиды которые тебе в личку кидал?)
Комментариев: 338
Публикаций: 169
ICQ: 650073308
- 291 +
  Автор: Alex   |   Группа: Пользователи   |   Дата: 02 октября 2011  
нет.гостеф слил коды аттестатов)
Комментариев: 60
Публикаций: 2
ICQ: 3374475
- 107 +
  Автор: FreeWolfAlex   |   Группа: Программисты   |   Дата: 05 октября 2011  
лучше бы написал как спарсить WMID по кошельку
Комментариев: 125
Публикаций: 2
ICQ: --
- 81 +
  Автор: aktanoff   |   Группа: Пользователи   |   Дата: 05 октября 2011  
как ни странно там и парсит вмид по кошелю
Комментариев: 171
Публикаций: 10
ICQ: 616654741
- 309 +
  Автор: pushok   |   Группа: V.I.P.   |   Дата: 05 октября 2011  
Цитата: FreeWolfAlex
лучше бы написал как спарсить WMID по кошельку

Цитата: aktanoff
как ни странно там и парсит вмид по кошелю

во во =)))
Комментариев: 0
Публикаций: 0
ICQ: --
- 0 +
  Автор: Hamit   |   Группа: Гости   |   Дата: 06 октября 2011  
Очень полезная статья, напишите кому она пригодилась и кто стал использовать.
Комментариев: 125
Публикаций: 2
ICQ: --
- 81 +
  Автор: aktanoff   |   Группа: Пользователи   |   Дата: 07 октября 2011  
Мне и я её использую для проверки идентичности
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.