Определяем WebMoney BL

Иногда может потребоваться определить этот небезызвестный показатель в своей программе.

Задавшись этим вопросом, полез смотреть, с каких страниц его можно спарсить. Первое, что попадается, это картинка, которая показывается при просмотре аттестата WebMoney (например, вот эта). Далее в заметке буду использовать wmid 000000000000 для примера. Можно и картинку распознать — не вопрос, но зачем так сложно?

Побродив немного по форумам и прочим ссылкам из выдачи, нашёл ещё пару возможностей определить WebMoney BL. Пара скриптов с https и, о чудо, простой скрипт, выдающий основную информацию о сертификате.

Итак, наша цель сводится к простой задаче парсинга html-страницы.

Что парсим? http://passport.webmoney.ru/asp/certcard.asp?id=000000000000 — вот ссылка. Зайдя на неё, видим информацию о: типе аттестата, фио, бизнес-уровне (тот самый BL), дате регистрации и количестве претензий. Мы спарсим только BL, но ничего не стоит потом изменить программу и для парсинга остальных значений.

Для простоты поставим на форму TIdHTTP, TEdit и TButton. В процедуре Button1Click создадим переменные:

var
 resp: string;
 bl, err: integer;

В resp получим код страницы:

 resp:=IdHTTP1.Get('http://passport.webmoney.ru/asp/certcard.asp?id='+Edit1.Text);

Теперь присмотримся к коду страницы: нужное нам значение бизнес-уровня находится сразу после [BL]:</span> и пробела. Чтобы получить это число, скопируем 10 символов после этого фрагмента и используем процедуру Val:

Val(Copy(resp ,Pos('[BL]:</span>',resp)+13,10), bl, err);

Если всё сработало правильно (то есть WebMoney не поменяли формат вывода того скрипта), то в bl окажется так нужный нам Business Level, а в err — 0, если длина BL 10 символов (что вряд ли возможно), 1 в случае ошибки или число от двух до десяти, которое показывает позицию первой «не цифры».

То есть, в случае err=1 мы имеем ошибку, иначе bl получен верно. Весь код:

procedure TForm1.Button1Click(Sender: TObject);
var
 resp: string;
 bl, err: integer;
begin
 resp:=IdHTTP1.Get('http://passport.webmoney.ru/asp/certcard.asp?id='+Edit1.Text);
 Val(Copy(resp ,Pos('[BL]:</span>',resp)+13,10), bl, err);
 if err<>1 then
 ShowMessage('WebMoney BL: '+inttostr(bl))
 else
 ShowMessage('error retrieving WebMoney BL');
end;

Порой ощутимо важно узнать рейтинг продавца, чтобы решить, стоит ли с ним связываться, покупать товар, или его миллионные обороты каждый день – выдумка. Да и в реальной жизни так: если покупаешь что-то дорогое, например, машину, всегда нужно читать будь то отзывы Hyundai от самих владельцев или тест-драйвы независимых фирм.

(c) crystalbit, http://parsers.info

93 ответа к «Определяем WebMoney BL»

  1. После прочтения статьи возник вопрос «а, собственно, нафига?», хотел запостить, а тут оказывается все такие :)

    Но автор молодец, не поленился раскрыть такую узкую тему.

  2. Вот не могу понять как определяется этот BL в самой программе, как то было захожу и смотрю у меня BL 25 на следующий день у меня уже 24. =)

  3. бл накрутить можно и за вечер и вы никогда об этом не узнаете, а что касается программирпования то я когда то выбрал для себя C## и пока вроде не пожалел правда выход из темного леса прорисовывается где то еще очень далеко

  4. Тут некоторые писали мол зачем это нужно. А мне реально пригодилось когда делали софт для обменника ВМ. Так что спасибо за статью

    1. а продавцу-то зачем? наоборот, чтобы покупатель видел, что у продавца было совершено много сделок, и он в некоторой степени надёжен

  5. Способ умер!, А вообще штука неплохая-была, при приобретении чего либо дополнительная информация о партнере не помешает.

  6. Автор приветствую! Проверил твою фишку. Потерял уйму времени. Тема не заработала. Возможно уже не актуальна тема. поздно взялся. Спасибо!

Добавить комментарий для dr_vice Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *