Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.02.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.001 c
2-1434893697
олямнап
2015-06-21 16:34
2017.02.26
Сортировка по убыванию


1-1348336174
crossmark
2012-09-22 21:49
2017.02.26
странный поток


1-1348444158
sss
2012-09-24 03:49
2017.02.26
Импорт ф-ции из библиотеки, где параметр указатель на структуру


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


1-1348498746
jacksotnik
2012-09-24 18:59
2017.02.26
Вопрос по fastreport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский