[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 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%3A00%3A00&endDate=2017-05-10T23%3A59%3A59"
--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/pe...;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"}

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.