QIWI WALLET API (Method is not supported)

boot88

Новичок
Вот инструкция как взять историю платежей с киви кошелька с офицального сайта:
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-history/v1/persons/79112223344/payments?rows=50&startDate=2017-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-history/v1/persons/79112223344/payments?rows=50&nextTxnId=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"}

Мож кто увидит мудрым глазом что здесь не так.
 

boot88

Новичок
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);
*/
?>
 

dima_g

Новичок
@boot88, для выгрузки истории платежей tgtTicket и stTicket больше нужны, всего 1 токен, который выдается здесь https://qiwi.com/api
Обновленный способ можно найти здесь https://developer.qiwi.com/qiwiwallet/qiwicom_ru.html#payments
По поводу вам не ответили в саппорте QIWI, напишите мне в ЛС или на [email protected], укажите в теме письма ваш ник
 
Сверху