Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.02.26;
Скачать: CL | DM;

Вниз

idhttp json - авторизация qiwi   Найти похожие ветки 

 
Djonik ©   (2015-06-22 10:13) [0]

Народ, помогите авторизоватся в qiwi через idhttp

в свойствах idhttp -
accept: application/json, text/javascript, */*
charset: windows-1251,utf-8;q=0.7,*;q=0.3
encoding: gzip,deflate
language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
content-type: application/x-www-form-urlencoded
reffer: https://w.qiwi.ru/login.action
useragent: User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

На форме -
IdHttp
IdSSLIOHandlerSocketOpenSSL
IdCompressorZLib
IdCookieManager

Пробую авторизоваться:

Params := TStringList.Create;
Params.Add("login=телефон");
Params.Add("password=пароль");
answer := IdHttp1.Post(Edit_Url.Text, Params); // https://w.qiwi.com/report/list.action?type=1
Params.Free;
Memo_Answer.Text := Answer;

Так ничего не получается.
Посмотрел, что там в JSON должен приходить ответ, который содержит поле - TOKEN

Вопрос 1:
т.е. я правильно понимаю: надо после первого запроса, получить ответ, добавить токен, и еще раз отослать пост?

Вопрос 2:
Как получить JSON?

Вытащить из ответа, вроде так(вопрос именно - как получить json при моем post запросе выше):

json :=TJSONObject.ParseJSONValue(answer) as TJSONObject;
if Assigned(json) then
begin
for I := 0 to json.Size-1 do
   Memo_Answer.Lines.Add(json.Get(i).JsonString.Value);
end
 else
Сaption := "no";


 
HF-Trade ©   (2015-06-22 22:02) [1]

Var
json   : TJSONObject;
answer : String;
stream : TStringStream;
Token : String;
begin
idhttp1.Request.CustomHeaders.Add("X-Requested-With: XMLHttpRequest");
stream:=TStringStream.Create("");
stream.WriteString("source=MENU&login=+номер_мобилы&password=пароль");
Answer := IdHttp1.Post("https://qiwi.ru/auth/login.action", stream);
JSON   := TJSONObject.ParseJSONValue(answer) as TJSONObject;
IF Assigned(JSON) Then
 Begin
  Token := JSON.ToString;
  Delete(Token, 1, POS(""token":"", token) + 8);
  Delete(Token, POS(""", Token), Length(Token));
  // Можно конечно и как JSON вытащить data - token
  stream.WriteString("&loginToken=" + Token);
  Answer := IdHttp1.Post("https://qiwi.ru/auth/login.action", Stream);
  JSON   := TJSONObject.ParseJSONValue(answer) as TJSONObject;
  IF Assigned(JSON) Then
   Begin
     Stream.Clear; // Больше вроде не нужно
     IdHttp1.Request.Referer := "https://qiwi.ru/main.action";
     Answer := IdHttp1.Post("https://w.qiwi.com/person/state.action", Stream);
     JSON   := TJSONObject.ParseJSONValue(answer) as TJSONObject;
     IF Assigned(JSON) Then
      Memo1.Lines.Add(json.ToString)
     Else
      Caption := "no json";
   End
    Else
     Caption := "no json";
 End
Else
 Caption := "no json";`
Stream.Free;



Как то так...
Авторизация проходит, ответ верный -

{"code":{"value":"7","_name":"TOKEN"},"data":{"parameters":null,"token":"6 754631581734996392","url":null},"message":null,"messages":null}
{"code":{"value":"0","_name":"NORMAL"},"data":null,"message":null,"messages":nul l}

Но потом, не могу получить данные - как я понял, должен прийти баланс и т.п. Я так понимаю они тут должны быть. Инфу брал с форумов, сам фидлером не смотрел, что там...
{"code":{"value":"11","_name":"SESSION"},"data":null,"message":null,"messa ges":null}

P.S. Если кто доделает - отпишите, как там баланс дернуть


 
Игорь Шевченко ©   (2015-06-22 22:13) [2]


> я правильно понимаю


а что, система настолько закрытая, что информацию по работе с ней надо на форумах искать ?


 
HF-Trade ©   (2015-06-22 22:16) [3]

Я загуглил, и взял пример с php + курл.
Переписал... ну как то так.
А с самим киви не работал никогда. Мб и есть так апи какой то, но они вроде для магазинов его суют, а так то, только снифером каким нить посмотреть, что куда..
Хотя полезность.


 
HF-Trade ©   (2015-06-23 12:37) [4]

К выше написанному -
Ниже код на php. Проверено. Работает. С него и переписывал на инди.
Собсно, вопрос -
Почему инди в запросе баланса(код выше), присылает не то, что нужно?

<?php
//phpinfo();
$USER_LOGIN = "+номер";
$USER_PASSWORD = "пароль";
$url="https://w.qiwi.com/auth/login.action";
$cookie_file = $_SERVER["DOCUMENT_ROOT"]."/fee/cookie.data";

//Просим токен
$post="source=MENU&login=$USER_LOGIN&password=$USER_PASSWORD";
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_TIMEOUT, 30);
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array ("Accept: application/json, text/javascript, */*; q=0.01","Content-Type: application/x-www-form-urlencoded; charset=windows-1251","X-Requested-With: XMLHttpRequest"));
   curl_setopt($ch,CURLOPT_REFERER, "https://w.qiwi.com/payment/main.action");
   curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
   curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$html = curl_exec($ch);
 
$html = json_decode($html,true);

//Выдернули токен
$token = $html["data"]["token"];
echo($token);
//повторяем авторизацию с токеном
$post = "source=MENU&login=$USER_LOGIN&password=$USER_PASSWORD&loginToken=$token";


   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
   curl_exec($ch);
   
//мы на сайте.

//проверяем баланс

   $url = "https://w.qiwi.com/person/state.action";
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch,CURLOPT_REFERER, $ref);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, "");
   $html = curl_exec($ch);
   $html = json_decode($html,true);
   //print_r( $html);
   print "Руб: ".$html["data"]["balances"]["RUB"];
?>



Страницы: 1 вся ветка

Текущий архив: 2017.02.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.004 c
15-1458477503
MsGuns
2016-03-20 15:38
2017.02.26
Excel->MS SQL Server


2-1434957180
Djonik
2015-06-22 10:13
2017.02.26
idhttp json - авторизация qiwi


15-1458595804
Юрий
2016-03-22 00:30
2017.02.26
С днем рождения ! 22 марта 2016 вторник


2-1434893697
олямнап
2015-06-21 16:34
2017.02.26
Сортировка по убыванию


2-1434959523
Арт
2015-06-22 10:52
2017.02.26
Ошибка list index bound(0)