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"}
Мож кто увидит мудрым глазом что здесь не так.
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"}
Мож кто увидит мудрым глазом что здесь не так.