Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2017, 08:59   #1
boot88
Пользователь
 
Регистрация: 01.08.2017
Сообщений: 14
Восклицание QIWI WALLET API(http.method.not.supported)

Вот инструкция как взять историю платежей с киви кошелька с офицального сайта:
https://developer.qiwi.com/qiwiwalle...m_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/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"}
Мож кто увидит мудрым глазом что здесь не так.

Последний раз редактировалось Alex11223; 02.08.2017 в 17:14.
boot88 вне форума Ответить с цитированием
Старый 01.08.2017, 10:03   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

1. Код оформляйте в специальных тегах
2. Лучше техподдержки киви вам вряд ли кто ответит
3. Реальные данные (лог пасс) от реальных акков не нужно светить

Последний раз редактировалось ADSoft; 01.08.2017 в 10:08.
ADSoft вне форума Ответить с цитированием
Старый 01.08.2017, 10:10   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

+ надеюсь что это видели и применили?
Цитата:
История платежей и пополнений вашего кошелька.

Для данного типа запросов необходимо получать специальный ST-ticket - в параметре service укажите "service":"http://t.qiwi.com/j_spring_cas_security_check".
ADSoft вне форума Ответить с цитированием
Старый 01.08.2017, 13:47   #4
boot88
Пользователь
 
Регистрация: 01.08.2017
Сообщений: 14
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
+ надеюсь что это видели и применили?
"service":"http://t.qiwi.com/j_spring_cas_security_check". Ага этот сервис проставил,
TGT и ST вроде норм возвращает, а вот историю платежей нет, и ещё ошибка их же что метод не поддерживает, это либо на их стороне либо надо разобраться немного, но вроде то должно всё работать.
boot88 вне форума Ответить с цитированием
Старый 01.08.2017, 13:48   #5
boot88
Пользователь
 
Регистрация: 01.08.2017
Сообщений: 14
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
1. Код оформляйте в специальных тегах
2. Лучше техподдержки киви вам вряд ли кто ответит
3. Реальные данные (лог пасс) от реальных акков не нужно светить
Привет, в тех поддержу им отписал, дня три или четыре уже прошло.
boot88 вне форума Ответить с цитированием
Старый 01.08.2017, 17:29   #6
boot88
Пользователь
 
Регистрация: 01.08.2017
Сообщений: 14
По умолчанию

а в специальных тегах, дайте ссылку. или пример где можно посмотреть.
boot88 вне форума Ответить с цитированием
Старый 01.08.2017, 17:41   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://www.programmersforum.ru/showp...23&postcount=3
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.08.2017, 10:20   #8
boot88
Пользователь
 
Регистрация: 01.08.2017
Сообщений: 14
По умолчанию

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($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_TIMEOUT30);
//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($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_POSTFIELDS$post);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($chCURLOPT_SSL_VERIFYHOST1);
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
curl_setopt($chCURLOPT_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($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_TIMEOUT30);
//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($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_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($chCURLOPT_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($telephone111);
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($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_TIMEOUT30);
curl_setopt($chCURLOPT_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($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_URL$url);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($chCURLOPT_SSL_VERIFYHOST1);
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array());
/*Accept: application/json
Authorization: Token ST-989-qw048gtdsvlk3i
Content-type: application/json
Host: edge.qiwi.com*/
curl_setopt($chCURLOPT_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;


curl_close($ch);

?>
boot88 вне форума Ответить с цитированием
Старый 02.08.2017, 10:20   #9
boot88
Пользователь
 
Регистрация: 01.08.2017
Сообщений: 14
По умолчанию

ага
boot88 вне форума Ответить с цитированием
Старый 02.08.2017, 13:32   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

наверное предполагалось что вы не еще раз запостите код в тегах - а просто отредактируете первое сообщение
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
http analyzer api Entry.Content.data dosha Работа с сетью в Delphi 1 19.11.2014 20:19
http://api.yandex.ru/maps/ GeoDim Фриланс 1 20.02.2014 06:52
Winsock API HTTP Server Lardes Работа с сетью в Delphi 10 21.12.2013 12:30
request method not supported jeka911 SQL, базы данных 0 09.09.2013 15:14