Вот инструкция как взять историю платежей с киви кошелька с офицального сайта: https://developer.qiwi.com/qiwiwallet/qiwicom_ru.html#tgts Давайте рассмотрим, всё в начале хорошо, но в конце когда нужен результат выдаёт непонятное сообщение, может кто знает в чём здесь фишка. Ну по порядку: Тип запроса - POST. URL запроса: https://auth.qiwi.com/cas/tgts Заголовки запроса: Accept: application/vnd.qiwi.sso-v1+json Content-Type: application/json Тело запроса - JSON. Параметры запроса: Параметр Тип Описание login String Номер QIWI Кошелька (с международным кодом 7) password String Пароль от QIWI Кошелька /////////////Ну как здесь видите QIWI просит у нас получить для авторизации TGT и вот выше описывает как его получить: вот скрипт как я его достал, всё норм достаёт ответ скрипта выведу здесь, вот: $LOGIN = "+79137192812"; $PASS = "123ASd123"; $ch = curl_init(); $arr = array("login" => $LOGIN,"password" => $PASS); $post = json_encode($arr); $url="https://auth.qiwi.com/cas/tgts?".$post; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Content-Type: application/json; charset=UTF-8','Host: auth.qiwi.com','User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36 ')); $html = curl_exec($ch); echo $html; //////////////Ответ Скрипта: ЗДЕСЬ НОРМ ВЫДАЁТ - {"entity":{"user":"+79137192812","ticket":"TGT-901534-gYb6Lz6m6kgJxvyEtmfdhcsR5i6roaRIvmafq6bwamogxrux7b"},"links":[{"rel":"sts","href":"https://auth.qiwi.com/cas/sts"}]} Как и положено, TGT видно далее он нужен нам что бы вытащить ST, ST нам надо что бы вытащить долгожданную историю платежей. Идём далее, здесь сейчас напишу как в инструкции что надо для получения ST: Тип запроса - POST. URL запроса: https://auth.qiwi.com/cas/sts Заголовки запроса: Accept: application/vnd.qiwi.sso-v1+json Content-Type: application/json Тело запроса - JSON. Параметры запроса: Параметр Тип Описание service String Идентификатор сервиса: Для платежных запросов - строка https://qiwi.com/j_spring_cas_security_check Для остальных запросов - строка http://t.qiwi.com/j_spring_cas_security_check ticket String Полученный TGT-ticket Ни чего сложного, ниже скрипт с ответом как я его достаю: $html = json_decode($html,true); $ticket=$html["entity"]["ticket"]; $telephone=$html["entity"]["user"]; $service='http://t.qiwi.com/j_spring_cas_security_check'; $arr = array("service" =>$service,"ticket" =>$ticket); $post = json_encode($arr); $url="https://auth.qiwi.com/cas/sts?".$post; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Content-Type: application/json;')); $html = curl_exec($ch); echo '<br>'.$html; //ОТвет Скрипта : ЗДЕСЬ НОРМ ТОЖЕ, ВЫДАЁТ - {"entity":{"ticket":"ST-16346499-xtOnMNik9ltMU15apL6N"},"links":[]} КАк и положено, достал отсюда ST, и далее мне надо получить историю платежей, а дальше непонятно, пишу по инструкции но выдаёт такое типо еррор : {"serviceName":"payment-history","errorCode":"http.method.not.supported","userMessage":"Method is not supported"} Здесь всё просто по моему, вот как написано так вроде и делаю, но результат вы поняли, сек сейчас инструкцию по истории скину: Тип запроса - GET. Пример 1. Последние 10 платежей с рублевого баланса и с привязанной карты user@server:~$ curl "https://edge.qiwi.com/payment-history/v1/persons/79112223344/payments?rows=10&operation=OUT&sources[0]=QW_RUB&sources[1]=CARD" --header "Accept: application/json" --header "Content-Type: application/json" --header "Authorization: Token ST-989-qw048gtdsvlk3i" GET /payment-history/v1/persons/79112223344/payments?rows=10&operation=OUT&sources[0]=QW_RUB&sources[1]=CARD HTTP/1.1 Accept: application/json Authorization: Token ST-989-qw048gtdsvlk3i Content-type: application/json Host: edge.qiwi.com Пример 2. Платежи за 10.05.2017 user@server:~$ curl "https://edge.qiwi.com/payment-histo...17-05-10T00:00:00&endDate=2017-05-10T23:59:59" --header "Accept: application/json" --header "Content-Type: application/json" --header "Authorization: Token ST-989-qw048gtdsvlk3i" GET /payment-history/v1/persons/79112223344/payments?rows=50&startDate=2017-05-10T00%3A00%3A00&endDate=2017-05-10T23%3A59%3A59 HTTP/1.1 Accept: application/json Authorization: Token ST-989-qw048gtdsvlk3i Content-type: application/json Host: edge.qiwi.com Пример 3. Продолжение списка платежей (в предыдущем запросе истории возвращены параметры nextTxnId=9103121 и nextTxnDate=2017-05-11T12:35:23) user@server:~$ curl "https://edge.qiwi.com/payment-histo...TxnId=9103121&nextTxnDate=2017-05-11T12:35:23" --header "Accept: application/json" --header "Content-Type: application/json" --header "Authorization: Token ST-989-qw048gtdsvlk3i" GET /payment-history/v1/persons/79112223344/payments?rows=50&nextTxnId=9103121&nextTxnDate=2017-05-11T12:35:23 HTTP/1.1 Accept: application/json Authorization: Token ST-989-qw048gtdsvlk3i Content-type: application/json Host: edge.qiwi.com URL запроса: https://edge.qiwi.com/payment-history/v1/persons/<wallet>/payments?<parameters> Где: <wallet> - номер кошелька, для которого получена авторизация (с международным префиксом, но без +), обязательный параметр <parameters> - дополнительные параметры запроса (см. ниже) Авторизация запроса выполняется по заголовку Authorization: Authorization: Token <ST-ticket> где <ST-ticket> - полученный в результате авторизации сессии ST-ticket. Заголовки запроса: Accept: application/json Параметры запроса: Параметр Тип Описание Обяз. rows Integer Число платежей в ответе, для разбивки отчета на части. Целое число от 1 до 50. Ну здесь далее типы параметров что нам надо там комменты и так далее, всё что касается истории платежей: Ну вот как я это делаю: $html = json_decode($html,true); $st=$html["entity"]["ticket"]; echo $st; $telephone = substr($telephone, 1, 11); echo $telephone; $url="https://edge.qiwi.com/payment-history/v1/persons/79137192812/payments?rows=10&operation=OUT&sources[0]=QW_RUB&sources[1]=CARD"; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/json','Authorization: Token '.$st.'','Content-Type: application/json;','Host: edge.qiwi.com')); $html = curl_exec($ch); echo '<br/>'.$html; curl_close($ch); А в ответ мне как вы поняли когда нужен результат пишет : {"serviceName":"payment-history","errorCode":"http.method.not.supported","userMessage":"Method is not supported"} Мож кто увидит мудрым глазом что здесь не так.
PHP: <?php $LOGIN = "+79137192812"; $PASS = "123ASd123"; $cookie_file = "cookie.txt"; $ch = curl_init(); $arr = array("login" => $LOGIN,"password" => $PASS); $post = json_encode($arr); $url="https://auth.qiwi.com/cas/tgts?".$post; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Content-Type: application/json; charset=UTF-8','Host: auth.qiwi.com','User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36 ')); $html = curl_exec($ch); //$html = curl_exec($ch); echo $html; $html = json_decode($html,true); $ticket=$html["entity"]["ticket"]; $telephone=$html["entity"]["user"]; //$arr = array("ticket" => $html["entity"]["ticket"],"service" => "https://qiwi.com/j_spring_cas_security_check"); //$post = json_encode($arr); $service='http://t.qiwi.com/j_spring_cas_security_check'; $arr = array("service" =>$service,"ticket" =>$ticket); $post = json_encode($arr); $url="https://auth.qiwi.com/cas/sts?".$post; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //curl_setopt($ch, CURLOPT_HTTPHEADER, array()); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Content-Type: application/json;')); //curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/main.action'); //curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $html = curl_exec($ch); //$html = curl_exec($ch); echo '<br>'.$html; $html = json_decode($html,true); $st=$html["entity"]["ticket"]; echo $st; //echo 'Authorization: Token '.$st; /* GET /funding-sources/v1/accounts/79123332244 HTTP/1.1 Accept: application/json Authorization: Token ST-2724343-*** Content-type:application/json Host: edge.qiwi.com */ /* $url="https://qiwi.com/j_spring_cas_security_check?ticket=".$st; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/json','Authorization: Token '.$st.'','Content-Type: application/json;','Host: edge.qiwi.com')); $html = curl_exec($ch); echo $html; */ $telephone = substr($telephone, 1, 11); echo $telephone; $url="https://edge.qiwi.com/payment-history/v1/persons/79137192812/payments?rows=10&startDate=2017-05-10T00%3A00%3A00&endDate=2017-05-10T23%3A59%3A59"; //$url="https://https://edge.qiwi.com/payment-history/v1/persons/79137192812/payments/total"; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //curl_setopt($ch, CURLOPT_HTTPHEADER, array()); /*Accept: application/json Authorization: Token ST-989-qw048gtdsvlk3i Content-type: application/json Host: edge.qiwi.com*/ curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/json','Authorization: Token '.$st.'','Content-Type: application/json;','Host: edge.qiwi.com')); //curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/main.action'); //curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $html = curl_exec($ch); //$html = curl_exec($ch); echo '<br/>'.$html; //echo $telephone(1,9); //echo substr($telephone, 1, 11); // возвращает "bcd" //$telephone = substr($telephone, 1, 11); //https://auth.qiwi.com/cas/sts //$token = $html["entity"]; //print_r ($token);//["user"][0]; curl_close($ch); /* $page = json_decode($html, true); $arr = array("ticket" => $page['entity']['ticket'],"service" => "https://qiwi.com/j_spring_cas_security_check"); $post = json_encode($arr); $url="https://auth.qiwi.com/cas/sts?".$post; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array()); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Accept-Language: ru;q=0.8,en-US;q=0.6,en;q=0.4','Content-Type: application/json; charset=UTF-8','Accept-Encoding: gzip, deflate','X-Requested-With: XMLHttpRequest')); curl_setopt($ch, CURLOPT_REFERER, 'https://auth.qiwi.com/app/proxy?v=1'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $html = curl_exec($ch); $arr = array("service" => "https://qiwi.com/j_spring_cas_security_check","ticket" => $page['entity']['ticket']); $post = json_encode($arr); $url="https://auth.qiwi.com/cas/sts?".$post; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array()); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Accept-Language: ru;q=0.8,en-US;q=0.6,en;q=0.4','Content-Type: application/json; charset=UTF-8','Accept-Encoding: gzip, deflate','X-Requested-With: XMLHttpRequest')); curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $html = curl_exec($ch); $page = json_decode($html, true); $url="https://qiwi.com/j_spring_cas_security_check?ticket=".$page["entity"]["ticket"]; curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array()); curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $html = curl_exec($ch); $url="https://qiwi.com/report/list.action?type=3"; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/main.action'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $html = curl_exec($ch); echo $html; curl_close($ch); */ ?> --- Добавлено --- Пт, ага, сделал.