За последние 24 часа нас посетили 23502 программиста и 1288 роботов. Сейчас ищут 1603 программиста ...

QIWI WALLET API(Method is not supported)

Тема в разделе "PHP для профи", создана пользователем boot88, 1 авг 2017.

  1. boot88

    boot88 Активный пользователь

    С нами с:
    1 авг 2017
    Сообщения:
    5
    Симпатии:
    0
    Вот инструкция как взять историю платежей с киви кошелька с офицального сайта:
    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"}

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

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. boot88

    boot88 Активный пользователь

    С нами с:
    1 авг 2017
    Сообщения:
    5
    Симпатии:
    0
    PHP:
    1. <?php
    2. $LOGIN = "+79137192812";
    3. $PASS = "123ASd123";
    4. $cookie_file = "cookie.txt";
    5. $ch = curl_init();
    6. $arr = array("login" => $LOGIN,"password" => $PASS);
    7. $post = json_encode($arr);
    8. $url="https://auth.qiwi.com/cas/tgts?".$post;
    9. curl_setopt($ch, CURLOPT_HEADER, 0);
    10. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    11. //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');
    12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    13. curl_setopt($ch, CURLOPT_URL, $url);
    14. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    15. //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    16. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    17. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    18. 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 '));
    19.  
    20. $html = curl_exec($ch);
    21.  
    22. //$html = curl_exec($ch);
    23. echo $html;
    24. $html = json_decode($html,true);
    25. $ticket=$html["entity"]["ticket"];
    26. $telephone=$html["entity"]["user"];
    27.  
    28.  
    29.  
    30. //$arr = array("ticket" => $html["entity"]["ticket"],"service" => "https://qiwi.com/j_spring_cas_security_check");
    31. //$post = json_encode($arr);
    32. $service='http://t.qiwi.com/j_spring_cas_security_check';
    33. $arr = array("service" =>$service,"ticket" =>$ticket);
    34. $post = json_encode($arr);
    35. $url="https://auth.qiwi.com/cas/sts?".$post;
    36. curl_setopt($ch, CURLOPT_HEADER, 0);
    37. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    38. //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');
    39. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    40. curl_setopt($ch, CURLOPT_URL, $url);
    41. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    42. //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    43. //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    44. //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    45. //curl_setopt($ch, CURLOPT_HTTPHEADER, array());
    46. curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/vnd.qiwi.sso-v1+json','Content-Type: application/json;'));
    47. //curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/main.action');
    48. //curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    49. //curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    50. $html = curl_exec($ch);
    51.  
    52. //$html = curl_exec($ch);
    53. echo '<br>'.$html;
    54. $html = json_decode($html,true);
    55. $st=$html["entity"]["ticket"];
    56. echo $st;
    57. //echo 'Authorization: Token '.$st;
    58.  
    59. /*
    60. GET /funding-sources/v1/accounts/79123332244 HTTP/1.1
    61. Accept: application/json
    62. Authorization: Token ST-2724343-***
    63. Content-type:application/json
    64. Host: edge.qiwi.com
    65. */
    66. /*
    67. $url="https://qiwi.com/j_spring_cas_security_check?ticket=".$st;
    68. curl_setopt($ch, CURLOPT_HEADER, 0);
    69. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    70. 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');
    71. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    72. curl_setopt($ch, CURLOPT_URL, $url);
    73. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    74. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    75. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    76. curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/json','Authorization: Token '.$st.'','Content-Type: application/json;','Host: edge.qiwi.com'));
    77. $html = curl_exec($ch);
    78. echo $html;
    79. */
    80.  
    81. $telephone = substr($telephone, 1, 11);
    82. echo $telephone;
    83. $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";
    84.  
    85. //$url="https://https://edge.qiwi.com/payment-history/v1/persons/79137192812/payments/total";
    86.  
    87. curl_setopt($ch, CURLOPT_HEADER, 0);
    88. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    89. 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');
    90. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    91. curl_setopt($ch, CURLOPT_URL, $url);
    92. //curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    93. //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    94. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    95. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    96. //curl_setopt($ch, CURLOPT_HTTPHEADER, array());
    97. /*Accept: application/json
    98. Authorization: Token ST-989-qw048gtdsvlk3i
    99. Content-type: application/json
    100. Host: edge.qiwi.com*/
    101. curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: application/json','Authorization: Token '.$st.'','Content-Type: application/json;','Host: edge.qiwi.com'));
    102. //curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/main.action');
    103. //curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    104. //curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    105. $html = curl_exec($ch);
    106.  
    107. //$html = curl_exec($ch);
    108. echo '<br/>'.$html;
    109.  
    110.  
    111.  
    112. //echo $telephone(1,9);
    113. //echo substr($telephone, 1, 11); // возвращает "bcd"
    114.  
    115. //$telephone = substr($telephone, 1, 11);
    116.  
    117.  
    118.  
    119.  
    120.  
    121.  
    122.  
    123.  
    124.  
    125.  
    126.  
    127.  
    128.  
    129. //https://auth.qiwi.com/cas/sts
    130.  
    131.  
    132.  
    133.  
    134. //$token = $html["entity"];
    135. //print_r ($token);//["user"][0];
    136.  
    137. /*
    138. $page = json_decode($html, true);
    139. $arr = array("ticket" => $page['entity']['ticket'],"service" => "https://qiwi.com/j_spring_cas_security_check");
    140. $post = json_encode($arr);
    141. $url="https://auth.qiwi.com/cas/sts?".$post;
    142. curl_setopt($ch, CURLOPT_HEADER, 0);
    143. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    144. 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');
    145. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    146. curl_setopt($ch, CURLOPT_URL, $url);
    147. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    148. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    149. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    150. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    151. curl_setopt($ch, CURLOPT_HTTPHEADER, array());
    152. 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'));
    153. curl_setopt($ch, CURLOPT_REFERER, 'https://auth.qiwi.com/app/proxy?v=1');
    154. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    155. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    156. $html = curl_exec($ch);
    157. $arr = array("service" => "https://qiwi.com/j_spring_cas_security_check","ticket" => $page['entity']['ticket']);
    158. $post = json_encode($arr);
    159. $url="https://auth.qiwi.com/cas/sts?".$post;
    160. curl_setopt($ch, CURLOPT_HEADER, 0);
    161. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    162. 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');
    163. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    164. curl_setopt($ch, CURLOPT_URL, $url);
    165. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    166. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    167. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    168. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    169. curl_setopt($ch, CURLOPT_HTTPHEADER, array());
    170. 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'));
    171. curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/');
    172. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    173. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    174. $html = curl_exec($ch);
    175. $page = json_decode($html, true);
    176. $url="https://qiwi.com/j_spring_cas_security_check?ticket=".$page["entity"]["ticket"];
    177. curl_setopt($ch, CURLOPT_HEADER, 0);
    178. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    179. 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');
    180. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    181. curl_setopt($ch, CURLOPT_URL, $url);
    182. curl_setopt($ch, CURLOPT_POST, 0);
    183. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    184. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    185. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    186. curl_setopt($ch, CURLOPT_HTTPHEADER, array());
    187. curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/');
    188. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    189. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    190. $html = curl_exec($ch);
    191. $url="https://qiwi.com/report/list.action?type=3";
    192. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    193. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    194. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    195. curl_setopt($ch, CURLOPT_URL, $url);
    196. curl_setopt($ch, CURLOPT_REFERER, 'https://qiwi.com/main.action');
    197. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    198. curl_setopt($ch, CURLOPT_POST, 0);
    199. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    200. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    201. $html = curl_exec($ch);
    202. echo $html;
    203. curl_close($ch);
    204. */
    205. ?>
    --- Добавлено ---
    Пт, ага, сделал.