В этой статье распишу этот парсер в двух вариантах его исполнения. Думаю, статья будет актуальна, т.к. старые парсеры перестали работать из-за изменений в коде страниц на passport.webmoney.ru
Итак, рассмотрим вариант функции, парсящий с исходника сервера webmoney:
Он устарел. Даже вернее не он устарел, а изменился исходный код сервера. Изменился незначительно, просто исчез символ #. Вот вариант в принципе исправленной функции:
Сохраните в файл returnwmid.php и влейте на хост
Теперь, как её использовать:
1. В register.php ищем в коде $pemail=$_POST[\"pemail\"];
2. Рядом с кодом ищем $wmid=$_POST[\"wmid\"];
3. Меняем на:
функция вернёт нам WMID. Значит следом в HTML коде можно просто убрать код поля для ввода WMID
Функция старая, взял копипастом с МФС\'а да и влом было накидывать парсер снова. Работать будет до тех пор, пока WM не поменяют исходник снова. Но это не дело - получать WMID по номеру кошелька с такими трудами вообще глупо, в частности, когда мы тупо парсим с HTML кода, имейте в виду - WM когда-нить психанут и запретят функцией парсить у них код.
А сейчас разберём более совершенный вариант. Даже наверное более быстрый. Использовать file_get_contents не будем. На денвере вариант не прокатит (прокатит на свежих версиях денвера, где есть CURL)
Итак, мы имеем URL: https://passport.webmoney.ru/xml/XMLGetWMIDInfo.aspx
Ну на неё нам надо отправить POST запрос с номером кошелька. Запрос будет передавать наши параметры. Имеет вид он:
Отправить POST запрос нам поможет в данном случае CURL.
Распишем функцию (комментарии имеются)
Что мы использовали:
1. simpleXML (в php 5 он выродился и о чудо - мы его использовали, правда всего лишь один раз, разобрав полученные XML теги в массив)
2. CURL - отправка запроса (ну на хостах без php 5 и курла вообще не вариант жить, поэтому у всех это есть.
3. Голову - если голова не варит - пьём ягуар. Если же не помогло - опустошаем вторую банку. Если вообще не помогает - кидаем пять банок мне (можно 3, смотря в каком состоянии я) и голова заработает у меня и работать будет на Вас.
Да и кстати, в скрипте использовать так же, как и использовали функцию с парсером из кода.
Всё... Чуток попозже распишу побольше функций, а сейчас напоследок можем внести изменения в функцию с курлом, это на сладкое, кто захочет...
Порядок изменения:
1. Переименуем функцию в её коде (для тех кто в танке) можно просто заменить return_wmid на return_bl или return_goods или же return_bads.
2. Переименовали функцию - ищем строку:
Возник вопрос - нахера нам это? В это нам не нужно. Хотя если кто-то захочет замудрить что-либо - тогда пожалуйста. К примеру, запрет реги пользователям с претензией.Так вот для этого и распишу, что мы можем выудить из всех плясок с шаманским бубном.
Итак, строку выше мы можем поменять на:
тогда обозванная новым именем(!) функция будет возвращать нам не WMID по кошельку, а BL.
Для записей в арбитраже уже повеселее.
Для положительных (зелёненьких):
Ну и для отрицательных та же самая строка, только posclaimscount меняем на negclaimscount, соответственно, для вывода даты последней записи в арбитраже можем posclaimscount поменять на claimslastdate.
Ну для аттестата тоже не скучно. Строку, над которой в функции экспериментируем меняем на:
Так мы получим название аттестата, но увы, оно без заглавных букв. Тут уже ковыряйтесь сами.
Хотим тип аттестата? Да не проблема:
А далее полученный после функции результат просто через switch прогоните. Это пригодится:
Ну а для инфы о ФИО уже посложнее будет, т.к. если у WMID не показывается в passport.webmoney.ru, значит пользователь запретил показывать свои ФИО, следовательно XML вернёт нам пустоту.
Картинки аттестатов можно также спарсить, хотя хз зачем они нужны. Поэтому расписывать не буду, догадаться можно. Подсказка: либо парсим картинки с XML запроса, либо по tid аттестата тупо выводим через тот же свитч.
И на сладенькое - https://passport.webmoney.ru/asp/certcard.asp?id=WMID,вместо WMID вписать свой.
Можно запарсить и сделать в виде визитной карточки без надписи \"информация о WMID\", ну это уже чтобы не мучаться с XML парсерами.
В общем то всё, надеюсь, статья оказалась информативной... Ещё одну интересную и более познавательную получите позже, когда я уже решу, что она того стоит...
Итак, рассмотрим вариант функции, парсящий с исходника сервера 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;
}
}
# ! Функция парсер #
?>
# Вункция парсер #
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;
}
}
# ! Функция парсер #
?>
# Вункция парсер #
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=return_wmid($pemail);
функция вернёт нам WMID. Значит следом в HTML коде можно просто убрать код поля для ввода WMID
Функция старая, взял копипастом с МФС\'а да и влом было накидывать парсер снова. Работать будет до тех пор, пока WM не поменяют исходник снова. Но это не дело - получать WMID по номеру кошелька с такими трудами вообще глупо, в частности, когда мы тупо парсим с HTML кода, имейте в виду - WM когда-нить психанут и запретят функцией парсить у них код.
А сейчас разберём более совершенный вариант. Даже наверное более быстрый. Использовать file_get_contents не будем. На денвере вариант не прокатит (прокатит на свежих версиях денвера, где есть CURL)
Итак, мы имеем URL: https://passport.webmoney.ru/xml/XMLGetWMIDInfo.aspx
Ну на неё нам надо отправить POST запрос с номером кошелька. Запрос будет передавать наши параметры. Имеет вид он:
номер кошелька
Отправить POST запрос нам поможет в данном случае CURL.
Распишем функцию (комментарии имеются)
function return_wmid($purse) {
$request="$purse"; //запрос
$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;
}
$request="$purse"; //запрос
$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 прогоните. Это пригодится:
псевдонима
формальный
начальный
персональный
продавца
capitaller
разработчика
регистратора
гаранта
сервиса wmt
сервиса wmt
оператора
формальный
начальный
персональный
продавца
capitaller
разработчика
регистратора
гаранта
сервиса wmt
сервиса wmt
оператора
Ну а для инфы о ФИО уже посложнее будет, т.к. если у WMID не показывается в passport.webmoney.ru, значит пользователь запретил показывать свои ФИО, следовательно XML вернёт нам пустоту.
Картинки аттестатов можно также спарсить, хотя хз зачем они нужны. Поэтому расписывать не буду, догадаться можно. Подсказка: либо парсим картинки с XML запроса, либо по tid аттестата тупо выводим через тот же свитч.
И на сладенькое - https://passport.webmoney.ru/asp/certcard.asp?id=WMID,вместо WMID вписать свой.
Можно запарсить и сделать в виде визитной карточки без надписи \"информация о WMID\", ну это уже чтобы не мучаться с XML парсерами.
В общем то всё, надеюсь, статья оказалась информативной... Ещё одну интересную и более познавательную получите позже, когда я уже решу, что она того стоит...
6 комментарии
0 загрузки
Детали
- Первый релиз 02 окт 2011
- Последнее обновление 03 авг 2026
- Документация Есть
- Содержимое файлов Исходные файлы
- Всего товаров 203
- Рейтинг (0)
- Регистрация 19 фев 2011
- Уровень 0
- Пользователь подтверждён Да
- Телефон подтверждён Нет
- Email подтверждён Нет

aktanoff
- 07 окт 2011Мне и я её использую для проверки идентичности
Alex
- 06 окт 2011Очень полезная статья, напишите кому она пригодилась и кто стал использовать.
pushok
- 05 окт 2011во во =)))
aktanoff
- 05 окт 2011как ни странно там и парсит вмид по кошелю
FreeWolfAlex
- 05 окт 2011лучше бы написал как спарсить WMID по кошельку