что такое токен киви кошелька и где его взять
Инструкция по работе с API QIWI Мастер
Чтобы автоматически управлять картами в составе пакета QIWI Мастер вы можете воспользоваться специальным API. С помощью API вы сможете:
Для настройки API и работы с ним вам потребуются базовые знания знание программирования на языках PHP или Python. Далее мы пошагово расскажем как отправлять запросы и обрабатывать ответы от сервиса QIWI.
Попробуйте интерфейс для управления вирутальными картами QIWI Мастер по API.
Установка и настройка сервера
Пропустите этот шаг если вы знаете, как запустить сервер на локальном компьютере или на хостинге. Перейти к работе с API.
Для отправки запросов через API и обработки ответов вам нужно настроить сервер. Разберем, как установить сервер Apache на домашнем компьютере или арендовать сервер в интернете. В примерах мы будем использовать язык программирования PHP.
Сервер на домашнем компьютере
В этой папке будут лежать исполняемые файлы вашей программы.
Аренда сервера у хостинг-компании
Этот способ быстрее, но нужен свободный домен, с которого будут отправляться запросы. Некоторые хостинг-провайдеры предоставляют домен в подарок при покупке хостинга. Желательно использовать ssl сертификат и отправлять запросы по https-протоколу. SSL сертификат нужен, чтобы ваш трафик не смогли расшифровать и подменить данные при отправке.
Для работы с API достаточно оплатить любой виртуальный хостинг с поддержкой скриптов на PHP и интерфейсом на cPanel (например тариф Host-A от Reg.ru). Виртуальные сервера VDS\VPS тоже подойдут, но больше времени уйдет на настройку.
Подготовка к работе с API
При создании токена отметьте следующие разрешения:
Отправка запросов и обработка ответа
Покупка пакет QIWI мастер
После исполнения скрипта в браузере появится статус транзакции.
Покупка карты
Шаг 1. Создание заказа
Доступные для заказа типы карт:
Скопируйте этот код в файл cardsbuy.php и перейдите в браузере на cтраницу http://localhost/master-api/cardsbuy.php.
Шаг 2. Подтверждение заказ карты
Далее запрос на подтверждение заказа карты.
Добавьте следующий код в файл cardbuy.php для подтверждения заказа карты:
Шаг 3. Покупка карты
Отправим запрос для покупки карты.
Добавьте следующий код в файл cardbuy.php для подтверждения заказа карты:
Сообщение «Accepted!» означает, что карта выпущена успешно. Любое другое сообщение значит ошибку.
Список карт с реквизитами
Скопируйте этот код в файл cardsreq.php и перейдите в браузере на cтраницу http://localhost/master-api/cardsreq.php:
В результате выполнения кода вы получите список выпущенных вирутальных карт в составе пакета QIWI Мастер.
Как легально «вскрыть» QIWI Кошелек и прокачать его по полной программе
С недавнего времени пользователям Visa QIWI Кошелька доступны новые методы API. Под катом: что это за API, зачем мы его открыли и почему стоит начать им пользоваться уже сейчас.
История появления API
Формально история нашего API началась в апреле этого года, хотя часть из входящих в него методов была доступна задолго до этого.
Массовый пользовательский сервис QIWI Кошелек постепенно переходит на архитектуру микросервисов, поэтому внутри нашей системы компоненты взаимодействуют друг с другом посредством некоего API. Любой пользователь может зайти на сайт, открыть дебаггер и просмотреть, какие запросы браузер отправляет на сервер. Минимальных навыков программиста достаточно, чтобы вытащить отправляемые запросы и использовать их в собственных решениях в обход сайта.
Желающих так схитрить оказалось довольно много. Это и студенты-энтузиасты, которым интересно поковыряться в деталях работы Кошелька, и профессиональные разработчики, желающие интегрировать отдельные функции сайта QIWI Кошелька в свои решения. В итоге параллельно с развитием сайта начала развиваться целая экосистема сторонних решений в «сером» режиме, не легализованном в пользовательском соглашении и не обеспеченным нашим саппортом.
Вот только скрипты, построенные на результатах самостоятельных исследований сайта, работают у пользователей нестабильно. Разработчики используют разные способы извлечения информации, в том числе откровенно устаревшие методы, создающие дополнительную нагрузку на наши сервера.
Чтобы упорядочить выгрузку данных с сайта, мы приняли решение легализовать ее, как это сделали в свое время в Citibank, Wargaming и Вконтакте. Мы описали наиболее современный и стабильный из существующих способов получения информации, сформировав первую версию пользовательского API.
С появлением документации для разработчиков пользователям больше не нужно разбирать наш сайт по кусочкам, рискуя наткнуться на старые протоколы. По посещаемости раздела документации мы отслеживали, насколько востребован API. Мы также разместили адрес электронной почты для обратной связи и вопросов и мониторили публикации по теме в социальных сетях и форумах. На тот момент перед нами не стояло задачи как-то продвигать API — мы хотели навести порядок и предложить сторонним разработчикам бесплатный, безопасный, проверенный способ доступа.
Публикация документации по API сама по себе никак не отразилась на работе сторонних инструментов доступа к функциям Кошелька. Мы не планировали регламентировать «самострой», но наблюдали за ситуацией, поскольку решения были построены разработчиками на свой страх и риск на основе недокументированных возможностей сервиса. И пока они не затрагивают данные наших пользователей, мы никак с ними не боремся, но стараемся выйти на контакт с их создателями и рекомендовать перейти на использование задокументированного API.
Поскольку запросы проходили через парсинг сайта, очевидно, что решения, использующие выходящие за рамки API методы, будут работать до тех пор, пока соответствующие схемы работают на сайте. Но мы надеемся, что после появления более качественного пути недокументированные решения начнут постепенно отмирать.
Проблемы первой версии
К сожалению, на момент создания первой версии API у нас еще не было отдельной системы аутентификации. Поэтому на том этапе мы использовали схему аутентификации с нашего сайта (CAS), она была разобрана по отдельным командам и опубликована на developer.qiwi.com.
Аутентификация стала ключевой проблемой первого API. Если с точки зрения сайта механизм был правильным (именно так организована аутентификация на большинстве веб-страниц, по принципу двух токенов с разным временем жизни), то пользователю пройти процедуру оказалось довольно сложно. Этот метод изначально не был ориентирован на пользователей, а служил внутренним задачам нашего сайта. В результате возникали различные сложности, к примеру, выскакивала капча «докажите, что вы не робот», что было неожиданностью для пользователей, поскольку API предполагает доступ именно при помощи автоматических систем.
Хотя публикацию открытого API мы никак не афишировали, в сети появилось несколько статей, в том числе с негативными отзывами. На адрес обратной связи api_help@qiwi.com мы получили более сотни писем, смысл которых сводился к тому, что сам по себе API хороший, но аутентификация никуда не годится. Не все пользователи понимали, почему для подключения к финансовому сервису надо проходить столь заковыристую процедуру, в то время как с Instagram или Вконтакте все намного проще. Мы разъясняли, что сложности были обусловлены именно финансовой составляющей, ведь используемый метод (как в аутентификации сайта, так и в API) не должен ставить под угрозу счета клиентов.
Анализируя обратную связь, мы увидели, что API востребован, а критика направлена в основном на систему аутентификации, и приняли решение развивать API дальше.
Обновленный API
Разработка новых методов в рамках API была поручена команде специалистов, которые делают бекэнд для сайта и мобильного приложения QIWI Кошелька. API — их ключевая компетенция, именно эта команда переводит основной сайт на архитектуру микросервисов. И API тут служит для взаимодействия основного сайта и отдельных сущностей через запросы, которые мы передаем нашим пользователям.
Чтобы доработать существующий API и добавить в него новые методы, мы тщательно проанализировали обратную связь от пользователей.
Хотя среди наших клиентов довольно много любителей-энтузиастов, склонных пробовать что-то новое, основная часть пользователей API — профессиональные разработчики, интегрирующие QIWI Кошелек в свои бизнес-процессы (причем, это не интернет-магазины — для юридических лиц у нас предусмотрен отдельный API). В основном речь идет об оптимизации работы Кошелька под собственные нужды: настройке уведомлений, автоматизации оплаты услуг и обмена цифровыми товарами между пользователями, а также других задачах, не связанных с привычной электронной коммерцией.
Опираясь на отзывы, мы предложили новую аутентификацию пользователей через API, добавили новые функции для взаимодействия с Кошельком. В первой версии у нас были описаны запрос баланса, история платежей и отправка перевода. Сейчас их дополнили запрос профиля пользователя, оплата сотовой связи, переводы в банки и на карты по номерам карт, счетов и договоров вместо полных реквизитов.
Новая аутентификация
Для построения системы аутентификации, ориентированной на API, мы использовали стандарт RFC 6749 по открытому протоколу OAuth 2.0. Чтобы аутентификация соответствовала требованиям финансового сервиса, мы обеспечили двухфакторный доступ — по паролю к Кошельку и SMS-коду. Для прохождения процедуры пользователю необходимо выпустить токен, действительный в течение одного месяца 180 дней (выпуск подтверждается SMS-сообщением). По просьбе пользователей в новой версии OAuth 2.0 мы также открыли возможность выбора прав доступа для токена. К примеру, если требуется запросить баланс или получить историю платежей, токену даются права только на чтение. Всего доступно четыре группы прав доступа:
Функция оказалась весьма востребована, менее половины токенов выпускается с полными правами (осуществление платежей), многим нужно лишь получение информации.
Профиль пользователя
Одна из новых функций, родившихся внутри нашей команды, а не из пожеланий клиентов — запрос профиля пользователя. Он позволяет получать различную информацию о Кошельке: дату регистрации, привязанный адрес электронной почты, уровень идентификации Кошелька. Последнее особенно важно для финансового сервиса, поскольку уровень идентификации определяет лимиты по операциям для кошелька. Ранее эту информацию можно было найти в настройках Кошелька на сайте qiwi.com, теперь она доступна и через API.
Отметим, что персональные данные пользователя через запрос профиля не доступны — таково требование безопасности.
Комиссионные тарифы
Следуя пожеланиям пользователей, мы добавили в API возможность запрашивать размер комиссии при проведении операций по любому из доступных поставщиков услуг. Метод этот открыт и прохождения процедуры аутентификации не требует.
Оплата сотовой связи
Еще одно нововведение, инициированное нашими пользователями, — инструмент автоматизации оплаты сотовой связи, например, для телефонов курьеров.
Фактически метод состоит из двух этапов:
Переводы в банки и на банковские карты
По аналогии с оплатой сотовой связи эта группа методов API позволяет автоматизировать переводы на банковские карты систем VISA, MasterCard и национальной платежной системы МИР по России и СНГ. Перевод осуществляется по номеру карты, по нему же определяется платежная система.
Банковский перевод — это отдельный метод, используемый для отправки денег в некоторые банки, с которыми у нас реализован онлайн-протокол моментальных переводов. В отличие от обычных денежных переводов по банковским реквизитам, для этих банков можно использовать большее количество идентификаторов клиента (номер карты, договора, счета и т. п.).
Юридическая сторона вопроса
До последнего времени доступ по API был формально запрещен. Все, что выполнялось при помощи API, делалось на свой страх и риск. Если пользователь распарсил сайт, достал из него какие-то команды, провел операции с кошельком, и у него пропали деньги, всю ответственность за последствия своих действий нес он сам. Техническая поддержка никак не участвовала в решении подобных проблем.
Чтобы таких ситуаций больше не возникало, мы внесли в пользовательское соглашение соответствующие изменения. Теперь API имеет официальный статус наравне с сайтом и мобильным приложением.
Что будет дальше?
Перечисленные методы доступа к данным уже работают, а документация по ним опубликована на сайте developer.qiwi.com.
Завершено внутреннее тестирование, и, опубликовав API, мы перешли ко второму этапу — проверке работоспособности связки «пользователь + документация + API». Этот этап должен ответить на вопросы о том, насколько понятна документация, нужны ли какие-то дополнительные пояснения и т. п. Поэтому мы предлагаем пользователям направлять отзывы на наш адрес: api_help@qiwi.com.
В ближайшей перспективе мы планируем расширить возможности API, предоставив сторонним сервисам методы для регистрации новых и аутентификации существующих пользователей в системе, а также проведения от их имени финансовых операций. Это немного иная модель взаимодействия между нами, пользователем и третьей стороной — сторонним сервисом.
Если вам интересны детали разработки новой версии API, пишите и задавайте вопросы в комментариях — мы постараемся ответить на них в наших следующих публикациях.
Внимание, конкурс
Чтобы заинтересовать разработчиков в использовании нового API, мы проводим всероссийский QIWI API Contest. Это первый конкурс в рамках QIWI Open Platform, направленный на популяризацию API компании.
Для участия в конкурсе необходимо создать Mobile First решения — чат-боты, мобильные приложения и web-продукты c использованием API QIWI Кошелька. Наши эксперты отберут наиболее проработанные решения и пригласят до 15 участников в финал конкурса, который пройдет в Москве 23 сентября.
Конкурсанты из других городов могут принять участие дистанционно. Регистрация проектов открыта и продлится до 15 сентября. Заявку на участие можно сделать на сайте QIWI API Contest через Timepad или отправить на почту apimarket@qiwi.com. Для всех вопросов мы создали специальный чат в Telegram.
Что такое токен киви кошелька и где его взять
API QIWI Кошелька позволяет автоматизировать получение информации о вашем счёте в сервисе QIWI Кошелек и проводить операции с его помощью.
Методы API доступны после регистрации пользователя в сервисе QIWI Кошелек.
Основной URL-адрес для вызова методов API (если не указано иное):
Для успешного вызова методов API необходимы:
API QIWI Кошелька использует открытый протокол OAuth 2.0. Согласно протоколу, пользователь авторизуется или регистрируется на сайте https://qiwi.com и запрашивает токен OAuth 2.0 Bearer с правом выполнения определённых действий. Выпуск токена подтверждается одноразовым кодом из СМС.
Если у вас уже есть действующий токен, то он автоматически заблокируется при выпуске нового токена
Для выпуска токена выполните следующие шаги:
Откройте в браузере страницу https://qiwi.com/api. Для этого потребуется авторизоваться или зарегистрироваться в сервисе QIWI Кошелек. После этого нажмите Выпустить новый токен.
Во всплывающем окне выберите разрешения на операции с токеном и нажмите Продолжить:
Подтвердите согласие на выпуск токена и нажмите Продолжить.
Укажите проверочный код из SMS-сообщения, отправленного на номер вашего кошелька.
Скопируйте строку токена и сохраните в безопасном месте. Используйте токен для запросов к API QIWI Кошелька.
Токен действует в течение 180 дней с момента выпуска. Вы можете заблокировать токен, не дожидаясь окончания срока его действия. Для этого удалите доступ к вашему кошельку приложению QIWI API на этой странице.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API, указывая тип токена Bearer перед его значением. Пример получения такого заголовка:
Токен добавляется в заголовок Authorization: Bearer
Итоговый заголовок, добавляемый в каждый запрос к API QIWI Кошелька:
Authorization: Bearer U1QtOTkwMTAyLWNud3FpdWhmbzg3M
Процесс интеграции через SDK
Ознакомьтесь с нашей документацией.
Шаг 1. Подготовка среды разработки
Выберите SDK для вашего языка программирования и перейдите в репозиторий на GitHub:
Обратите внимание, что в зависимости от выбранного вами SDK потребуется установка Composer, Apache Maven или NuGet.
Шаг 2. Создание секретного ключа
Перейдите на вкладку API.
Нажмите на кнопку Настроить и придумайте название, по которому потом сможете найти нужный API-ключ.
Рекомендуем подключить уведомления об оплате, отметив чекбокс Использовать эту пару ключей для серверных уведомлений об изменении статусов счетов. После настройки серверных уведомлений вы сможете узнавать, когда выставленные счета оплачены, и автоматически реагировать на оплату счетов (пополнять баланс, отгружать товар, давать доступ к контенту). Подробнее об уведомлениях – в документации.
В поле URL сервера для уведомлений укажите адрес вашего сервера для обработки уведомлений об оплате.
Нажмите Создать и получите ключи авторизации.
Скопируйте себе секретный ключ (в оранжевом блоке), нажав на ссылку Скопировать в буфер. Рекомендуем не закрывать данное окно и не нажимать на кнопку Дальше, пока не настроите авторизацию.
Шаг 3. Авторизация
В разрабатываемом коде заведите константу SECRET_KEY и присвойте ей значение секретного ключа, вставив его из буфера обмена комбинацией клавиш Ctrl+V.
Раздел документации с примерами авторизации находится здесь.
Шаг 4. Выставление счета
Рекомендуем использовать дополнительные параметры:
Необязательные параметры для выставления счета:
В ответе на запрос выставления счета возвращаются следующие поля:
Для тестирования и отладки сервиса рекомендуем выставлять и оплачивать счета суммой 1 рубль.
Раздел документации с примерами выставления счетов находится здесь.
Шаг 5. Установка дополнительных параметров к ссылке на счёт
При выставлении счета через API в ответе присутствует поле payUrl, содержащее ссылку на форму. К данной ссылке можно добавить следующие параметры:
Шаг 6. Редирект пользователя на платежную форму
Пример получения URL оплаты по счету
Реализуйте на вашем сайте перенаправление пользователя на платежную форму по ссылке, полученной в поле payUrl ответа на запрос выставления счёта или по ссылке с дополнительными параметрами, сформированной на шаге 5.
Добавьте реферальные ссылки для платежей с сайта. Полная ссылка подтвердит его реальность и позволит избежать проблем с блокировкой кошелька.
Пример передачи реферальной ссылки
Сервис уведомлений позволяет понять, когда и по какому счету произошла оплата. Вам не нужно каждый раз отправлять запросы в QIWI, можно подключить сервис и получать уведомления автоматически. Но стоит обратить внимание на то, что уведомление может быть отправлено несколько раз даже в случае успешного ответа от вашего сервиса, поэтому это необходимо учитывать при разработке бизнес-логики отгрузки товара или услуги на вашей стороне.
Формат уведомлений описан в документации.
Данные приходят в теле запроса (body). Данные запроса хранятся в формате JSON.
Так как для отладки уведомлений тестовый контур не предусмотрен, рекомендуем выставлять счета на 1 рубль и оплачивать их самостоятельно.
Сервис уведомлений не является обязательным для интеграции, вы можете реализовать более простой вариант с опросом статуса счета. В этом случае перейдите сразу к шагу 11.
Условия интеграции с API уведомлений
Если же вы пока не можете определиться, тогда ознакомьтесь с условиями обслуживания интеграции с API уведомлений:
Мы устанавливаем на своей стороне таймаут на установление соединения – 2 секунды, и таймаут на получение ответа – также 2 секунды. Поэтому не рекомендуем внедрять долго выполняющуюся логику или логику, связанную с ожиданием (waiter, sleep), в процесс обработки уведомления.
Рекомендуем на стороне вашего сервера организовывать очередь и складывать в нее входящие запросы от QIWI с изменением статусов счетов, после чего отвечать QIWI на уведомление успешным статусом.
Обработку уведомлений в очереди и свою бизнес-логику стоит проводить в потоках, отдельных от приема уведомлений, чтобы успевать отвечать нам вовремя.
Мы не можем гарантировать exactly once доставку уведомления, т.е. вам может прийти более одного уведомления об одной и той же успешной оплате счёта.
Чтобы обработать такие ситуации, вам необходимо проверять на своей стороне, присылали ли мы уже уведомление по оплате данного счета и была ли произведена отгрузка товара/услуги по этому счету вашему клиенту.
Если вы выберете механизм уведомлений для интеграции и получения сообщений об успешных платежах, мы все же рекомендуем использовать в дополнение к нему опрос статуса счета.
Шаг 8*. Настройка серверных уведомлений
Уведомление представляет собой входящий POST-запрос.
Тело запроса содержит JSON-сериализованные данные счета (кодировка UTF-8).
Проверьте, что IP-адреса, с которых QIWI отправляет уведомления, находятся в списке разрешенных:
Если не приходят уведомления по счету:
Попробуйте отправить себе уведомление, заменив в примере https://test.com/notif.php на URL, который вы указали при создании ключей для получения уведомлений.
Если вы не используете облачные сервисы для приема уведомлений вроде amazon или heroku, а настраивали свой вебсервер и ssl в нем самостоятельно, проверьте ssl сертификат.
Если ssl сертификат для установления соединения по https выпущен не общеизвестным доверенным центром сертификации (например, Comodo, Verisign, Thawte и т.п.), проверьте, что ваш сервер при установке соединения отправляет полную цепочку сертификатов, включая доверенный корневой центр сертификации в начале цепочки.
Полную цепочку сертификатов вы можете загрузить на сайте центра сертификации, выпустившего ваш сертификат.
Шаг 9*. Проверка подписи уведомлений
Настоятельно рекомендуем проверять уведомления на подлинность, т.к. мы не несем ответственность, если будут приходить поддельные уведомления от мошенников.
Формат уведомлений описан в документации.
Данные приходят в теле запроса (body). Данные запроса хранятся в формате JSON.
Алгоритм проверки подписи:
Объединить значения следующих параметров уведомления в одну строку с разделителем | :
где <*>– значение параметра. Все значения при проверке подписи должны трактоваться как строки.
Вычислить HMAC-хэш c алгоритмом хэширования SHA256:
hash = HMAС(SHA256, invoice_parameters, secret_key)
где: secret_key – секретный ключ, при помощи которого был выставлен счёт; invoice_parameters – строка из п.1.
Сравнить значение заголовка X-Api-Signature-SHA256 с результатом из п.2.
В разрабатываемом коде заведите константу merchantSecret и присвойте ей значение секретного ключа, который выпустили в личном кабинете. Значение должно быть то же самое, что в константе SECRET_KEY на шаге авторизации.
После проверки уведомлений на подлинность отправьте QIWI ответ на уведомление успешным статусом.
Если вы наблюдаете задержки в получении уведомлений более 10 минут (увеличился баланс вашего кошелька или написал клиент, что оплатил, а уведомление так и не пришло) – рекомендуем в дополнение переключиться на поллинг статусов счетов – см. следующий шаг.
Шаг 11*. Проверка статуса перевода по счету
Так как в случае недоступности вашего сервера или сбоя на нашей стороне уведомления могут быть доставлены с задержкой, поэтому рекомендуем использовать метод проверки статуса оплаты счета как дополнение к механизму обработки уведомлений.
Также данный метод можно использовать как самостоятельный, т.е. после выставления счета раз в какой-то промежуток времени опрашивать статус этого счета. Этот метод проще интеграции с сервисом уведомлений.
Раздел документации с примерами проверки статуса оплаты счета находится здесь.
Шаг 12. Бизнес-логика
Счет в своем жизненном цикле проходит следующие статусы оплаты:
Статус | Описание | Комментарий |
---|---|---|
WAITING | Счет выставлен, ожидает оплаты | Нефинальный, ожидание оплаты или истечения срока действия |
PAID | Счет оплачен | Финальный (измениться не может) |
REJECTED | Счет отклонен | Финальный (измениться не может) |
EXPIRED | Время жизни счета истекло. Счет не оплачен | Финальный (измениться не может) |
Опираясь на статус счета, полученный в уведомлении или при помощи поллинга статуса, доработайте бизнес-логику вашего сайта.
Поздравляем, интеграция с QIWI для получения платежей закончена!
Дополнительно. Шаг 13. Отмена неоплаченных счетов
Вы можете отменять неоплаченные счета самостоятельно, используя метод cancelBill.
Раздел документации с примерами запросов для отмены неоплаченных счетов находится здесь.