qiwi api php готовый скрипт на php
Qiwi api php готовый скрипт на php
Universal payments API PHP SDK
PHP SDK модуль для внедрения единого платежного протокола эквайринга и QIWI Кошелька.
Установка и подключение
Установка с помощью composer:
Пошаговое руководство по работе с SDK (для физических лиц): https://developer.qiwi.com/ru/p2p-sdk-guide/#integration-sdk
API P2P-счетов (для физических лиц): https://developer.qiwi.com/ru/p2p-payments
API QIWI Кассы (для юридических лиц): https://developer.qiwi.com/ru/bill-payments
Смена SECRET_KEY на новый:
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается платежная форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API.
Подробное описание параметров для выставления счёта представлено в руководстве по использованию SDK, а так же в документации для физ.лиц и для юр. лиц
Информация о счете
Метод getBillInfo возвращает информацию о счете. В параметрах нужно указать идентификатор счета billId внутри вашей системы, в результате будет получен ответ со статусом счета. Подробнее в документации — для физ.лиц, для юр.лиц.
Отмена неоплаченного счета
Метод cancelBill отменяет неоплаченный счет. В параметрах нужно указать идентификатор счета billId внутри вашей системы, в результате будет получен ответ с информацией о счете. Подробнее в документации — для физ.лиц, для юр.лиц.
! Метод недоступен для физических лиц
В результате будет выведена информация о возврате и о счете:
Информация о возврате
! Метод недоступен для физических лиц
В результате будет выведена информация о возврате:
Тестирования без истользования реального API:
API QIWI Кассы
Последнее обновление: 2019-03-20 | Редактировать на GitHub
Для работы API потребуются публичный и секретный ключи. Ключи создаются в личном кабинете после регистрации и подключения на kassa.qiwi.com или p2p.qiwi.com.
Схема работы
Пользователь формирует заказ на сайте мерчанта.
Мерчант перенаправляет пользователя на Платежную форму для выставления счета по заказу. Или выставляет счет по API и перенаправляет пользователя на созданную платежную форму.
Пользователь выбирает способ оплаты и оплачивает счет. По умолчанию подбирается оптимальный для пользователя способ оплаты.
После оплаты счета мерчант получает уведомление (предварительно настройте отправку уведомлений в Личном кабинете). Уведомления об оплате счета содержат параметры авторизации, которые необходимо проверять на сервере мерчанта.
Также есть возможность
Авторизация
Запросы мерчанта авторизуются посредством секретного ключа API (SECRET_KEY). Параметр авторизации указывается в заголовке Authorization, значение которого формируется как «Bearer SECRET_KEY».
Публичный ключ (PUBLIC_KEY) используется для выставления счетов через веб-форму.
Ключи создаются в личном кабинете после регистрации и подключения на kassa.qiwi.com или p2p.qiwi.com.
Взаимодействие через API
1. Выставление счета
Запрос → PUT
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
2. Уведомления об оплате счетов
Запрос ← POST
Уведомление представляет собой входящий POST-запрос.
Тело запроса содержит JSON-сериализованные данные счета (кодировка UTF-8).
Адрес сервера для уведомлений указывается на сайте kassa.qiwi.com в разделе «Настройка протокола» или на p2p.qiwi.com при генерации ключей.
HEADERS
Авторизация уведомлений
Алгоритм проверки подписи:
Объединить значения параметров в одну строку с разделителем | :
где <*>– значение параметра уведомления. Все значения при проверке подписи должны трактоваться как строки.
Вычислить HMAC-хэш c алгоритмом хэширования SHA256:
hash = HMAС(SHA256, invoice_parameters, secret_key) Где:
Сравнить значение заголовка X-Api-Signature-SHA256 с результатом из п.2.
Строка и ключ подписи кодируются в UTF-8.
Параметры
В POST-запросе уведомления указаны параметры счета.
Параметр | Описание | Тип |
---|---|---|
bill | Данные о счете | Object |
billId | Уникальный идентификатор счета в системе мерчанта | String(200) |
siteId | Идентификатор сайта мерчанта в QIWI Кассе | String |
amount | Данные о сумме счета | Object |
amount.value | Сумма счета, округленная до двух десятичных знаков в меньшую сторону | Number(6.2) |
amount.currency | Идентификатор валюты счета (Alpha-3 ISO 4217 код) | String(3) |
status | Данные о статусе счета | Object |
status.value | Строковое значение статуса | String |
status.changedDateTime | Дата обновления статуса. Формат даты ГГГГ-ММ-ДДTЧЧ:ММ:ССZ | String |
customer | Данные о пользователе, на которого был выставлен счет | Object |
customer.phone | Номер телефона, на который был выставлен счет (если был указан при выставлении счета) | String |
customer.email | E-mail пользователя (если был указан при выставлении счета) | String |
customer.account | Идентификатор пользователя в системе мерчанта (если был указан при выставлении счета) | String |
creationDateTime | Дата создания счета. Формат даты ГГГГ-ММ-ДДTЧЧ:ММ:ССZ | String |
expirationDateTime | Срок оплаты счета. Формат даты ГГГГ-ММ-ДДTЧЧ:ММ:СС+ЧЧ:ММ\-Z | String |
comment | Комментарий к счету | String(255) |
customFields | Дополнительные данные счета (если были указаны при выставлении счета). | Object |
version | Версия уведомлений | String |
Ответ →
HEADERS
После того, как был получен входящий запрос-уведомление, необходимо проверить подлинность цифровой подписи и отправить ответ.
3. Проверка статуса оплаты счета
Метод позволяет проверить статус оплаты счета клиентом. Рекомендуется его использовать после получения уведомления об оплате.
Запрос → GET
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
4. Отмена неоплаченного счета
Пример тела ответа при ошибке
Метод позволяет отменить неоплаченный счет.
Запрос → POST
URL https://api.qiwi.com/partner/bill/v1/bills//reject
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
5. Возврат средств
Метод позволяет сделать возврат средств по оплаченному счету.
Запрос → PUT
URL https://api.qiwi.com/partner/bill/v1/bills//refunds/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
6. Статус возврата
Метод запрашивает статус возврата по оплаченному счету.
Запрос → GET
URL https://api.qiwi.com/partner/bill/v1/bills//refunds/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
Статусы оплаты счетов
Статус Описание Финальный WAITING Счет выставлен, ожидает оплаты — PAID Счет оплачен + REJECTED Счет отклонен + EXPIRED Время жизни счета истекло. Счет не оплачен +
Статусы операции возврата
Статус Описание Финальный PARTIAL Частичный возврат суммы — FULL Полный возврат суммы +
Дополнительно
Выставление счета через платежную форму
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается платежная форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API.
REDIRECT →
URL https://oplata.qiwi.com/create
Параметры
В ссылке на веб-форму указываются параметры счета.
Параметр Описание Тип Обяз. publicKey Ключ идентификации мерчанта, полученный в QIWI Кассе String + billId Уникальный идентификатор счета в системе мерчанта URL-закодированная строка String(200) — amount Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков Number(6.2) — phone Номер телефона пользователя, на который выставляется счет (в международном формате) URL-закодированная строка — email E-mail пользователя, куда будет отправлена ссылка для оплаты счета URL-закодированная строка — account Идентификатор пользователя в системе мерчанта URL-закодированная строка — comment Комментарий к счету URL-закодированная строка String(255) — customFields[] Дополнительные данные счета URL-закодированная строка String(255) — lifetime Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, ему присваивается финальный статус EXPIRED и последующая оплата станет невозможна.
Внимание! По истечении 45 суток от даты выставления счет автоматически будет переведен в финальный статус URL-закодированная строка
ГГГГ-ММ-ДДTччмм — successUrl URL для переадресации в случае успешной оплаты с баланса QIWI Кошелька. При ином способе оплаты переадресация не выполняется. Ссылка должна вести на сайт мерчанта. URL-закодированная строка —
Персонализация
Персонализация позволяет адаптировать платежную форму под ваш стиль. Настраивается лого, фон и цвет кнопок.
Создать стили можно в личном кабинете. Возможно создать несколько стилей.
При настройке задается код, привязанный к стилю (например, кодСтиля ). Для использования стиля на платежной форме необходимо передать в параметре customFields запроса создания счета или вызова платежной формы переменную: «themeCode»:»кодСтиля» с соответствующим кодом стиля.
Пример передачи параметра при работе с формой
Пример передачи параметра при работе через API

Checkout Popup
Пример работы popup
Всплывающее окно (popup) позволяет открыть форму оплаты поверх вашего сайта. В библиотеке доступно два метода: создание нового счета и открытие существующего.
Установка и подключение:
Выставление нового счета
Пример выставления счета через popup
Параметр Описание Тип Обязательное publicKey Ключ идентификации мерчанта, полученный в QIWI Кассе String + amount Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков Number(6.2) + phone Номер телефона пользователя, на который выставляется счет (в международном формате) String — email E-mail пользователя, куда будет отправлена ссылка для оплаты счета String — account Идентификатор пользователя в системе мерчанта String — comment Комментарий к счету String(255) — customFields Дополнительные данные счета Object — lifetime Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, ему присваивается финальный статус EXPIRED и последующая оплата станет невозможна. Строка в виде ГГГГ-ММ-ДДTччмм —
Открытие существующего счета
Пример открытия уже созданного счета в popup
Возможности при открытии ссылки счета
При выставлении счета через API в ответе приходит payUrl с ссылкой на форму оплаты. К ссылке можно добавить следующие параметры:
Готовые решения
SDK и библиотеки
Решения для CMS
Рекомендации к оформлению
Иконки
Данные рекомендации помогут вашим пользователям быстрее сориентироваться на странице выбора способов оплаты.

Допустимо отображение QIWI Кассы текстом, без логотипа. Иконки способов оплаты выводятся:

Инструкция по работе с 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 Мастер.
Хочу рассказать вам про такой class как Qiwi API Class PHP, точнее класс называется просто Qiwi API Class. Служит он для упрощения работы с API системой Qiwi. Данный класс облегчит разработку при необходимости использовать API от Qiwi. Чем он поможет? Да все просто, в классе есть все необходимое для работы с персональным кошельком, причем все запросы готовы к использованию и вам нужно лишь только правильно воспользоваться ими. Давайте разберемся в нем более детально (ссылка для скачивания класса в конце статьи).
Как работает Qiwi API Class PHP:
Класс авторизуется в кошельке через специальное API от Qiwi, то есть вам не нужно вводить никакие пароли и светить ими, ожидаю что их сопрут. Все работает на уровне самого Qiwi, то есть через официальное API. Что на мой взгляд достаточно удобно, нежели как раньше некоторые использовали Curl, для получения и обработки данных с кошелька.
Ранее я сказал, что класс нужен для работы с персональным кошельком, да это действительно так. Он работает только с персональным кошельком, причем вам не нужно проходить идентификацию и не нужно подключаться к ishop от qiwi.
Для работы с классом вам потребуется само собой qiwi кошелек, а именно номер киви кошелька и его token. Как получить токен говорить я не буду, в официальной документации все есть, причем вполне понятно и подробно.
Доступные методы:
Установка и подключение Qiwi API Class:
1. Скачайте архив с классом
2. Скопируйте Qiwi.php из папки src/ и подключите его в вашем скрипте:
Получение последних 50 записей из истории платежей за 30 дней:
Получение данных по определенной транзакции:
Вот собственно и все, с остальными методами работать можно по той же аналогии, что и с примерами выше. Если что-то непонятно будет, пишите в комментариях, также если найдете какие-то ошибки в работе класса пишите, буду исправлять по мере поступления и по мере свободного времени. Также если у вас есть предложения по расширению и обновлению класса, то пишите, будем вместе думать как лучше все сделать и стоит ли это того. Скачать самую последнюю версию класса вы можете по ссылке ниже, она ведет на GitHub, где всегда будет последняя версия. На этом все, всем спасибо за внимание.
Версия Qiwi API: Версия 1.4 от 15.05.2018
Версия Qiwi API Class PHP: Версия 1.2 от 26.05.2018
Похожее в блоге
Shnapik
Вебмастер с опытом ищет приют! Возьмите меня, а то меня рвут!
76 комментариев
Подскажите метод определения платежной системы банковской карты.
Если вы про перевод средств, то вот номера:
Всё есть в документации, здесь же (в классе), собраны лишь методы для удобно работы с ними, чтобы вам не писать постоянно одно и тоже, а можно лишь подключить его. В остальном всё как в документации работает.
Я имею в виду в класс добавить метод определения банковской карты (1963 VISA / 21013 MasterCard / 31652 МИР)
Необходимо получить ответ как в документации:
<
«code»: <
«value»: «0»,
«_name»: «NORMAL»
>,
«data»: null,
«message»: «1963»,
«messages»: null
>
Все методы из класса в правильном ответе получают то же, что и в документации. Если речь об этом, если нет, то немного не понимаю что конкретно нужно.
Какой метод из класса используете вы?
Данного метода в вашем классе нет.
В документации используются другие заголовки и хост:
POST /card/detect.action HTTP/1.1
Host: qiwi.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
cardNumber=4256********1231
Здесь будет другой запрос cURL.
Пробовал дописать метод, но он не работает:
Здравствуйте. Такая же проблема. Как решили вопрос с определением провайдера перед отправкой средств?
Дмитрий, понять какой метод используется, точнее параметр (его id), для метода sendMoneyToProvider. Можно извне, например при post запросе в селекте выбора карты (где value будет иметь идентификатор провайдера).
Заголовки же все те же используются:
Понять верна ли карта или нет, через данный класс не получится. Можно лишь это понять будет во время перевода, например когда мы отправляем средства и нам выдает ошибку. Вы можете написать свои функции с проверкой «правильно ли введены данные», например по длине символов.
При попытке передать деньги выводится ошибка
Array ( [message] => Json validation error List((obj.paymentMethod.accountId,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (obj.sum.currency,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (obj.id,List(ValidationError(List(error.expected.jsstring),WrappedArray())))) )
Другие методы класса тоже не работает
Метод перевода средств исправлен в примере, теперь всё работает как надо. В статье и на гитхабе новые примеры уже указаны Спасибо:)
постоянно выбивает «Техническая ошибка»
При каких обстоятельствах? Какой метод используется? Как используется, что подключается кроме данного скрипта, как он подключается. Не хватает немного вот этой информации.
Пытаюсь перевести с Qiwi на Qiwi методом «sendMoneyToQiwi», в итоге когда делаю запрос выбивает «Техническая ошибка под кодом 300», подключается с помощью «require_once ‘Qiwi.php’;», без проблем работает «getBalance()», а вот перевод выбивает постоянно ошибку, уже какой день пробую а толку 0, хотя токен у меня разрешен на перевод без СМС
Код всего файла можно посмотреть?
Я не про код класса, он по идее остается неизменным. Я про код файла где подключается данный класс и в котором используются методы.
Условия использования
Последнее обновление: 09-09-2021
Для подключения на свой сайт сервиса приема переводов для физических лиц p2p необходимо иметь QIWI Кошелек со статусом идентификации «Основной» или «Профессиональный». Если Ваш кошелек имеет статус «Анонимный» – пройдите идентификацию удобным для вас способом. Для получения «Основного» статуса достаточно указать паспортные данные, для получения «Профессионального» статуса необходимо пройти очную идентификацию.
Рекомендуем получить «Профессиональный» статус. Такой статус имеет повышенные лимиты на остаток на балансе, сумму платежей и переводов в месяц, максимальную сумму одной операции. Подробнее про лимиты.
Рекомендуем ознакомиться с частыми вопросами по нашему сервису, а также с информацией о том, как избежать блокировки кошелька.
Активация p2p
Поздравляем! Вы можете приступить к интеграции.
Для работы API потребуются публичный и секретный ключи. Ключи создаются в разделе «API».
Схема работы с API
Пользователь формирует счет на вашей стороне.
Вы перенаправляете пользователя на платежную форму для выставления счета. Или выставляете счет по API и перенаправляете пользователя на созданную платежную форму.
Пользователь выбирает способ перевода и подтверждает перевод. По умолчанию подбирается оптимальный для пользователя способ перевода.
После перевода по счету вы получаете уведомление (предварительно настройте отправку уведомлений в Личном кабинете при создании ключей). Уведомления о переводе по счету содержат параметры авторизации, которые необходимо проверять на Вашем сервере.
Готовые решения
SDK и библиотеки
С руководством по работе с SDK можно ознакомиться здесь.
Решения для CMS
Авторизация
Ваши запросы авторизуются посредством секретного ключа API ( SECRET_KEY ). Параметр авторизации указывается в заголовке Authorization, значение которого формируется как «Bearer SECRET_KEY».
Публичный ключ ( PUBLIC_KEY ) используется для выставления счетов через форму.
Ключи создаются в личном кабинете на вкладке API после авторизации на p2p.qiwi.com.
Для выпуска пары ключей выполните следующие шаги:
Внизу страницы нажмите на кнопку Настроить.

Придумайте название паре ключей, чтобы упростить поиск в списке.

Подключите уведомления об оплате счетов, отметив Использовать эту пару ключей для серверных уведомлений об изменении статусов счетов.

В поле URL сервера для уведомлений укажите адрес вашего сервера, который будет обрабатывать уведомления об оплате, и нажмите на кнопку Создать.

Скопируйте в буфер секретный ключ и сохраните его в безопасном месте — в дальнейшем он не будет отображаться в интерфейсе. Используйте секретный ключ для запросов к API.
Выставление счета через форму
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается форма с выбором способа перевода. При использовании этого способа нельзя гарантировать, что все счета выставлены вами, в отличие от выставления по API.
REDIRECT →
URL https://oplata.qiwi.com/create
Параметры
Взаимодействие через API
1. Выставление счета
Доступно выставление счетов в рублях и тенге.
Также существует более простой способ выставления счета — непосредственно через вызов платежной формы
Запрос → PUT
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
2. Проверка статуса перевода по счету
Метод позволяет проверить статус перевода по счету. Рекомендуется его использовать после получения уведомления о переводе.
Запрос → GET
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
3. Отмена неоплаченного счета
Метод позволяет отменить счет, по которому не был выполнен перевод.
Запрос → POST
URL https://api.qiwi.com/partner/bill/v1/bills//reject
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
Статусы оплаты счетов
Статус Описание Финальный WAITING Счет выставлен, ожидает оплаты — PAID Счет оплачен + REJECTED Счет отклонен + EXPIRED Время жизни счета истекло. Счет не оплачен +
Уведомления о переводе по счету
Адрес сервера для уведомлений указывается в личном кабинете p2p.qiwi.com при генерации ключей.
Перед началом работы с сервисом уведомлений прочитайте условия по интеграции API уведомлений.
Пулы IP-адресов, с которых сервисы QIWI отправляют уведомления:
Если ваш сервер обработки уведомлений работает за брандмауэром, необходимо добавить эти IP-адреса в список разрешенных адресов входящих TCP-пакетов.
Запрос ← POST
Уведомление представляет собой входящий POST-запрос.
Тело запроса содержит JSON-сериализованные данные счета (кодировка UTF-8).
HEADERS
Авторизация уведомлений
Алгоритм проверки подписи:
Объединить значения следующих параметров уведомления в одну строку с разделителем | :
где <*>– значение параметра. Все значения при проверке подписи должны трактоваться как строки.
Вычислить HMAC-хэш c алгоритмом хэширования SHA256:
hash = HMAС(SHA256, invoice_parameters, secret_key) Где:
Сравнить значение заголовка X-Api-Signature-SHA256 с результатом из п.2.
Строка и ключ подписи кодируются в UTF-8.
Данные
В уведомлении содержится информация о счете.
Поле Описание Тип bill Данные о счете Object billId Уникальный идентификатор счета в вашей системе, указанный при выставлении String(200) siteId Ваш идентификатор в системе p2p.qiwi String amount Данные о сумме счета Object amount.value Сумма счета, округленная до двух десятичных знаков в меньшую сторону Number(6.2) amount.currency Идентификатор валюты суммы счета (Alpha-3 ISO 4217 код) String(3) status Данные о статусе счета Object status.value Строковое значение статуса String status.changedDateTime Дата обновления статуса. Формат даты
ГГГГ-ММ-ДДTЧЧ:ММ:ССZ String customer Данные о пользователе Object customer.phone Номер телефона (если был указан при выставлении счета) String customer.email E-mail пользователя (если был указан при выставлении счета) String customer.account Идентификатор пользователя в вашей системе (если был указан при выставлении счета) String creationDateTime Дата создания счета. Формат даты
ГГГГ-ММ-ДДTЧЧ:ММ:ССZ String expirationDateTime Срок оплаты счета. Формат даты
ГГГГ-ММ-ДДTЧЧ:ММ:СС+ЧЧ:ММ\-Z String comment Комментарий к счету String(255) customFields Дополнительные данные счета (если были указаны при выставлении счета). Object version Версия уведомлений String
Ответ →
HEADERS
После того, как был получен входящий запрос-уведомление, необходимо проверить подлинность цифровой подписи и отправить ответ.
Настройки формы и счета
При выставлении счета через API в ответе приходит payUrl с ссылкой на форму. К ссылке можно добавить следующие параметры:
Добавьте реферальные ссылки для платежей с сайта. Полная ссылка подтвердит реальность сайта и позволит избежать проблем с блокировкой кошелька. Платежи, проходящие со страницы без заголовка запроса Refer будут приводить к блокировке кошелька. Подробнее читайте в статье Как передавать реферальные ссылки.
Пример передачи реферальной ссылки
Персонализация
Вы можете настроить персонализированную форму оплаты – изменить свое имя на название магазина и настроить цвет фона и кнопок.

Перейдите в личном кабинете в раздел Форма приема переводов, нажмите на кнопку Настроить, произведите настройку и нажмите на кнопку Сохранить.

Пример передачи параметра при вызове платежной формы
Пример передачи параметра в запросе к API
Обратите внимание, что значение themeCode индивидуально для разных кошельков.
Для применения стиля к платежной форме:
Checkout Popup
Пример работы popup
Всплывающее окно (popup) позволяет открыть форму перевода поверх вашего сайта.
В библиотеке доступно два метода: открытие существующего счета и открытие вашей формы приема переводов.
Установка и подключение:
Открытие существующего счета
Пример открытия уже созданного счета в popup
Открытие персонализированной формы
Пример открытия персонализированной формы
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
6. Статус возврата
Метод запрашивает статус возврата по оплаченному счету.
Запрос → GET
URL https://api.qiwi.com/partner/bill/v1/bills//refunds/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
Статусы оплаты счетов
Статус Описание Финальный WAITING Счет выставлен, ожидает оплаты — PAID Счет оплачен + REJECTED Счет отклонен + EXPIRED Время жизни счета истекло. Счет не оплачен +
Статусы операции возврата
Статус Описание Финальный PARTIAL Частичный возврат суммы — FULL Полный возврат суммы +
Дополнительно
Выставление счета через платежную форму
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается платежная форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API.
REDIRECT →
URL https://oplata.qiwi.com/create
Параметры
В ссылке на веб-форму указываются параметры счета.
Параметр Описание Тип Обяз. publicKey Ключ идентификации мерчанта, полученный в QIWI Кассе String + billId Уникальный идентификатор счета в системе мерчанта URL-закодированная строка String(200) — amount Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков Number(6.2) — phone Номер телефона пользователя, на который выставляется счет (в международном формате) URL-закодированная строка — email E-mail пользователя, куда будет отправлена ссылка для оплаты счета URL-закодированная строка — account Идентификатор пользователя в системе мерчанта URL-закодированная строка — comment Комментарий к счету URL-закодированная строка String(255) — customFields[] Дополнительные данные счета URL-закодированная строка String(255) — lifetime Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, ему присваивается финальный статус EXPIRED и последующая оплата станет невозможна.
Внимание! По истечении 45 суток от даты выставления счет автоматически будет переведен в финальный статус URL-закодированная строка
ГГГГ-ММ-ДДTччмм — successUrl URL для переадресации в случае успешной оплаты с баланса QIWI Кошелька. При ином способе оплаты переадресация не выполняется. Ссылка должна вести на сайт мерчанта. URL-закодированная строка —
Персонализация
Персонализация позволяет адаптировать платежную форму под ваш стиль. Настраивается лого, фон и цвет кнопок.
Создать стили можно в личном кабинете. Возможно создать несколько стилей.
При настройке задается код, привязанный к стилю (например, кодСтиля ). Для использования стиля на платежной форме необходимо передать в параметре customFields запроса создания счета или вызова платежной формы переменную: «themeCode»:»кодСтиля» с соответствующим кодом стиля.
Пример передачи параметра при работе с формой
Пример передачи параметра при работе через API

Checkout Popup
Пример работы popup
Всплывающее окно (popup) позволяет открыть форму оплаты поверх вашего сайта. В библиотеке доступно два метода: создание нового счета и открытие существующего.
Установка и подключение:
Выставление нового счета
Пример выставления счета через popup
Параметр Описание Тип Обязательное publicKey Ключ идентификации мерчанта, полученный в QIWI Кассе String + amount Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков Number(6.2) + phone Номер телефона пользователя, на который выставляется счет (в международном формате) String — email E-mail пользователя, куда будет отправлена ссылка для оплаты счета String — account Идентификатор пользователя в системе мерчанта String — comment Комментарий к счету String(255) — customFields Дополнительные данные счета Object — lifetime Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, ему присваивается финальный статус EXPIRED и последующая оплата станет невозможна. Строка в виде ГГГГ-ММ-ДДTччмм —
Открытие существующего счета
Пример открытия уже созданного счета в popup
Возможности при открытии ссылки счета
При выставлении счета через API в ответе приходит payUrl с ссылкой на форму оплаты. К ссылке можно добавить следующие параметры:
Готовые решения
SDK и библиотеки
Решения для CMS
Рекомендации к оформлению
Иконки
Данные рекомендации помогут вашим пользователям быстрее сориентироваться на странице выбора способов оплаты.

Допустимо отображение QIWI Кассы текстом, без логотипа. Иконки способов оплаты выводятся:

Инструкция по работе с 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 Мастер.
Хочу рассказать вам про такой class как Qiwi API Class PHP, точнее класс называется просто Qiwi API Class. Служит он для упрощения работы с API системой Qiwi. Данный класс облегчит разработку при необходимости использовать API от Qiwi. Чем он поможет? Да все просто, в классе есть все необходимое для работы с персональным кошельком, причем все запросы готовы к использованию и вам нужно лишь только правильно воспользоваться ими. Давайте разберемся в нем более детально (ссылка для скачивания класса в конце статьи).
Как работает Qiwi API Class PHP:
Класс авторизуется в кошельке через специальное API от Qiwi, то есть вам не нужно вводить никакие пароли и светить ими, ожидаю что их сопрут. Все работает на уровне самого Qiwi, то есть через официальное API. Что на мой взгляд достаточно удобно, нежели как раньше некоторые использовали Curl, для получения и обработки данных с кошелька.
Ранее я сказал, что класс нужен для работы с персональным кошельком, да это действительно так. Он работает только с персональным кошельком, причем вам не нужно проходить идентификацию и не нужно подключаться к ishop от qiwi.
Для работы с классом вам потребуется само собой qiwi кошелек, а именно номер киви кошелька и его token. Как получить токен говорить я не буду, в официальной документации все есть, причем вполне понятно и подробно.
Доступные методы:
Установка и подключение Qiwi API Class:
1. Скачайте архив с классом
2. Скопируйте Qiwi.php из папки src/ и подключите его в вашем скрипте:
Получение последних 50 записей из истории платежей за 30 дней:
Получение данных по определенной транзакции:
Вот собственно и все, с остальными методами работать можно по той же аналогии, что и с примерами выше. Если что-то непонятно будет, пишите в комментариях, также если найдете какие-то ошибки в работе класса пишите, буду исправлять по мере поступления и по мере свободного времени. Также если у вас есть предложения по расширению и обновлению класса, то пишите, будем вместе думать как лучше все сделать и стоит ли это того. Скачать самую последнюю версию класса вы можете по ссылке ниже, она ведет на GitHub, где всегда будет последняя версия. На этом все, всем спасибо за внимание.
Версия Qiwi API: Версия 1.4 от 15.05.2018
Версия Qiwi API Class PHP: Версия 1.2 от 26.05.2018
Похожее в блоге
Shnapik
Вебмастер с опытом ищет приют! Возьмите меня, а то меня рвут!
76 комментариев
Подскажите метод определения платежной системы банковской карты.
Если вы про перевод средств, то вот номера:
Всё есть в документации, здесь же (в классе), собраны лишь методы для удобно работы с ними, чтобы вам не писать постоянно одно и тоже, а можно лишь подключить его. В остальном всё как в документации работает.
Я имею в виду в класс добавить метод определения банковской карты (1963 VISA / 21013 MasterCard / 31652 МИР)
Необходимо получить ответ как в документации:
<
«code»: <
«value»: «0»,
«_name»: «NORMAL»
>,
«data»: null,
«message»: «1963»,
«messages»: null
>
Все методы из класса в правильном ответе получают то же, что и в документации. Если речь об этом, если нет, то немного не понимаю что конкретно нужно.
Какой метод из класса используете вы?
Данного метода в вашем классе нет.
В документации используются другие заголовки и хост:
POST /card/detect.action HTTP/1.1
Host: qiwi.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
cardNumber=4256********1231
Здесь будет другой запрос cURL.
Пробовал дописать метод, но он не работает:
Здравствуйте. Такая же проблема. Как решили вопрос с определением провайдера перед отправкой средств?
Дмитрий, понять какой метод используется, точнее параметр (его id), для метода sendMoneyToProvider. Можно извне, например при post запросе в селекте выбора карты (где value будет иметь идентификатор провайдера).
Заголовки же все те же используются:
Понять верна ли карта или нет, через данный класс не получится. Можно лишь это понять будет во время перевода, например когда мы отправляем средства и нам выдает ошибку. Вы можете написать свои функции с проверкой «правильно ли введены данные», например по длине символов.
При попытке передать деньги выводится ошибка
Array ( [message] => Json validation error List((obj.paymentMethod.accountId,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (obj.sum.currency,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (obj.id,List(ValidationError(List(error.expected.jsstring),WrappedArray())))) )
Другие методы класса тоже не работает
Метод перевода средств исправлен в примере, теперь всё работает как надо. В статье и на гитхабе новые примеры уже указаны Спасибо:)
постоянно выбивает «Техническая ошибка»
При каких обстоятельствах? Какой метод используется? Как используется, что подключается кроме данного скрипта, как он подключается. Не хватает немного вот этой информации.
Пытаюсь перевести с Qiwi на Qiwi методом «sendMoneyToQiwi», в итоге когда делаю запрос выбивает «Техническая ошибка под кодом 300», подключается с помощью «require_once ‘Qiwi.php’;», без проблем работает «getBalance()», а вот перевод выбивает постоянно ошибку, уже какой день пробую а толку 0, хотя токен у меня разрешен на перевод без СМС
Код всего файла можно посмотреть?
Я не про код класса, он по идее остается неизменным. Я про код файла где подключается данный класс и в котором используются методы.
Условия использования
Последнее обновление: 09-09-2021
Для подключения на свой сайт сервиса приема переводов для физических лиц p2p необходимо иметь QIWI Кошелек со статусом идентификации «Основной» или «Профессиональный». Если Ваш кошелек имеет статус «Анонимный» – пройдите идентификацию удобным для вас способом. Для получения «Основного» статуса достаточно указать паспортные данные, для получения «Профессионального» статуса необходимо пройти очную идентификацию.
Рекомендуем получить «Профессиональный» статус. Такой статус имеет повышенные лимиты на остаток на балансе, сумму платежей и переводов в месяц, максимальную сумму одной операции. Подробнее про лимиты.
Рекомендуем ознакомиться с частыми вопросами по нашему сервису, а также с информацией о том, как избежать блокировки кошелька.
Активация p2p
Поздравляем! Вы можете приступить к интеграции.
Для работы API потребуются публичный и секретный ключи. Ключи создаются в разделе «API».
Схема работы с API
Пользователь формирует счет на вашей стороне.
Вы перенаправляете пользователя на платежную форму для выставления счета. Или выставляете счет по API и перенаправляете пользователя на созданную платежную форму.
Пользователь выбирает способ перевода и подтверждает перевод. По умолчанию подбирается оптимальный для пользователя способ перевода.
После перевода по счету вы получаете уведомление (предварительно настройте отправку уведомлений в Личном кабинете при создании ключей). Уведомления о переводе по счету содержат параметры авторизации, которые необходимо проверять на Вашем сервере.
Готовые решения
SDK и библиотеки
С руководством по работе с SDK можно ознакомиться здесь.
Решения для CMS
Авторизация
Ваши запросы авторизуются посредством секретного ключа API ( SECRET_KEY ). Параметр авторизации указывается в заголовке Authorization, значение которого формируется как «Bearer SECRET_KEY».
Публичный ключ ( PUBLIC_KEY ) используется для выставления счетов через форму.
Ключи создаются в личном кабинете на вкладке API после авторизации на p2p.qiwi.com.
Для выпуска пары ключей выполните следующие шаги:
Внизу страницы нажмите на кнопку Настроить.

Придумайте название паре ключей, чтобы упростить поиск в списке.

Подключите уведомления об оплате счетов, отметив Использовать эту пару ключей для серверных уведомлений об изменении статусов счетов.

В поле URL сервера для уведомлений укажите адрес вашего сервера, который будет обрабатывать уведомления об оплате, и нажмите на кнопку Создать.

Скопируйте в буфер секретный ключ и сохраните его в безопасном месте — в дальнейшем он не будет отображаться в интерфейсе. Используйте секретный ключ для запросов к API.
Выставление счета через форму
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается форма с выбором способа перевода. При использовании этого способа нельзя гарантировать, что все счета выставлены вами, в отличие от выставления по API.
REDIRECT →
URL https://oplata.qiwi.com/create
Параметры
Взаимодействие через API
1. Выставление счета
Доступно выставление счетов в рублях и тенге.
Также существует более простой способ выставления счета — непосредственно через вызов платежной формы
Запрос → PUT
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
2. Проверка статуса перевода по счету
Метод позволяет проверить статус перевода по счету. Рекомендуется его использовать после получения уведомления о переводе.
Запрос → GET
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
3. Отмена неоплаченного счета
Метод позволяет отменить счет, по которому не был выполнен перевод.
Запрос → POST
URL https://api.qiwi.com/partner/bill/v1/bills//reject
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
Статусы оплаты счетов
Статус Описание Финальный WAITING Счет выставлен, ожидает оплаты — PAID Счет оплачен + REJECTED Счет отклонен + EXPIRED Время жизни счета истекло. Счет не оплачен +
Уведомления о переводе по счету
Адрес сервера для уведомлений указывается в личном кабинете p2p.qiwi.com при генерации ключей.
Перед началом работы с сервисом уведомлений прочитайте условия по интеграции API уведомлений.
Пулы IP-адресов, с которых сервисы QIWI отправляют уведомления:
Если ваш сервер обработки уведомлений работает за брандмауэром, необходимо добавить эти IP-адреса в список разрешенных адресов входящих TCP-пакетов.
Запрос ← POST
Уведомление представляет собой входящий POST-запрос.
Тело запроса содержит JSON-сериализованные данные счета (кодировка UTF-8).
HEADERS
Авторизация уведомлений
Алгоритм проверки подписи:
Объединить значения следующих параметров уведомления в одну строку с разделителем | :
где <*>– значение параметра. Все значения при проверке подписи должны трактоваться как строки.
Вычислить HMAC-хэш c алгоритмом хэширования SHA256:
hash = HMAС(SHA256, invoice_parameters, secret_key) Где:
Сравнить значение заголовка X-Api-Signature-SHA256 с результатом из п.2.
Строка и ключ подписи кодируются в UTF-8.
Данные
В уведомлении содержится информация о счете.
Поле Описание Тип bill Данные о счете Object billId Уникальный идентификатор счета в вашей системе, указанный при выставлении String(200) siteId Ваш идентификатор в системе p2p.qiwi String amount Данные о сумме счета Object amount.value Сумма счета, округленная до двух десятичных знаков в меньшую сторону Number(6.2) amount.currency Идентификатор валюты суммы счета (Alpha-3 ISO 4217 код) String(3) status Данные о статусе счета Object status.value Строковое значение статуса String status.changedDateTime Дата обновления статуса. Формат даты
ГГГГ-ММ-ДДTЧЧ:ММ:ССZ String customer Данные о пользователе Object customer.phone Номер телефона (если был указан при выставлении счета) String customer.email E-mail пользователя (если был указан при выставлении счета) String customer.account Идентификатор пользователя в вашей системе (если был указан при выставлении счета) String creationDateTime Дата создания счета. Формат даты
ГГГГ-ММ-ДДTЧЧ:ММ:ССZ String expirationDateTime Срок оплаты счета. Формат даты
ГГГГ-ММ-ДДTЧЧ:ММ:СС+ЧЧ:ММ\-Z String comment Комментарий к счету String(255) customFields Дополнительные данные счета (если были указаны при выставлении счета). Object version Версия уведомлений String
Ответ →
HEADERS
После того, как был получен входящий запрос-уведомление, необходимо проверить подлинность цифровой подписи и отправить ответ.
Настройки формы и счета
При выставлении счета через API в ответе приходит payUrl с ссылкой на форму. К ссылке можно добавить следующие параметры:
Добавьте реферальные ссылки для платежей с сайта. Полная ссылка подтвердит реальность сайта и позволит избежать проблем с блокировкой кошелька. Платежи, проходящие со страницы без заголовка запроса Refer будут приводить к блокировке кошелька. Подробнее читайте в статье Как передавать реферальные ссылки.
Пример передачи реферальной ссылки
Персонализация
Вы можете настроить персонализированную форму оплаты – изменить свое имя на название магазина и настроить цвет фона и кнопок.

Перейдите в личном кабинете в раздел Форма приема переводов, нажмите на кнопку Настроить, произведите настройку и нажмите на кнопку Сохранить.

Пример передачи параметра при вызове платежной формы
Пример передачи параметра в запросе к API
Обратите внимание, что значение themeCode индивидуально для разных кошельков.
Для применения стиля к платежной форме:
Checkout Popup
Пример работы popup
Всплывающее окно (popup) позволяет открыть форму перевода поверх вашего сайта.
В библиотеке доступно два метода: открытие существующего счета и открытие вашей формы приема переводов.
Установка и подключение:
Открытие существующего счета
Пример открытия уже созданного счета в popup
Открытие персонализированной формы
Пример открытия персонализированной формы
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
Статусы оплаты счетов
Статус | Описание | Финальный |
---|---|---|
WAITING | Счет выставлен, ожидает оплаты | — |
PAID | Счет оплачен | + |
REJECTED | Счет отклонен | + |
EXPIRED | Время жизни счета истекло. Счет не оплачен | + |
Статусы операции возврата
Статус | Описание | Финальный |
---|---|---|
PARTIAL | Частичный возврат суммы | — |
FULL | Полный возврат суммы | + |
Дополнительно
Выставление счета через платежную форму
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается платежная форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API.
REDIRECT →
URL https://oplata.qiwi.com/create
Параметры
В ссылке на веб-форму указываются параметры счета.
Параметр | Описание | Тип | Обяз. |
---|---|---|---|
publicKey | Ключ идентификации мерчанта, полученный в QIWI Кассе | String | + |
billId | Уникальный идентификатор счета в системе мерчанта | URL-закодированная строка String(200) | — |
amount | Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков | Number(6.2) | — |
phone | Номер телефона пользователя, на который выставляется счет (в международном формате) | URL-закодированная строка | — |
E-mail пользователя, куда будет отправлена ссылка для оплаты счета | URL-закодированная строка | — | |
account | Идентификатор пользователя в системе мерчанта | URL-закодированная строка | — |
comment | Комментарий к счету | URL-закодированная строка String(255) | — |
customFields[] | Дополнительные данные счета | URL-закодированная строка String(255) | — |
lifetime | Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, ему присваивается финальный статус EXPIRED и последующая оплата станет невозможна. Внимание! По истечении 45 суток от даты выставления счет автоматически будет переведен в финальный статус | URL-закодированная строка ГГГГ-ММ-ДДTччмм | — |
successUrl | URL для переадресации в случае успешной оплаты с баланса QIWI Кошелька. При ином способе оплаты переадресация не выполняется. Ссылка должна вести на сайт мерчанта. | URL-закодированная строка | — |
Персонализация
Персонализация позволяет адаптировать платежную форму под ваш стиль. Настраивается лого, фон и цвет кнопок.
Создать стили можно в личном кабинете. Возможно создать несколько стилей.
При настройке задается код, привязанный к стилю (например, кодСтиля ). Для использования стиля на платежной форме необходимо передать в параметре customFields запроса создания счета или вызова платежной формы переменную: «themeCode»:»кодСтиля» с соответствующим кодом стиля.
Пример передачи параметра при работе с формой
Пример передачи параметра при работе через API
Checkout Popup
Пример работы popup
Всплывающее окно (popup) позволяет открыть форму оплаты поверх вашего сайта. В библиотеке доступно два метода: создание нового счета и открытие существующего.
Установка и подключение:
Выставление нового счета
Пример выставления счета через popup
Параметр | Описание | Тип | Обязательное |
---|---|---|---|
publicKey | Ключ идентификации мерчанта, полученный в QIWI Кассе | String | + |
amount | Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков | Number(6.2) | + |
phone | Номер телефона пользователя, на который выставляется счет (в международном формате) | String | — |
E-mail пользователя, куда будет отправлена ссылка для оплаты счета | String | — | |
account | Идентификатор пользователя в системе мерчанта | String | — |
comment | Комментарий к счету | String(255) | — |
customFields | Дополнительные данные счета | Object | — |
lifetime | Дата, до которой счет будет доступен для оплаты. Если счет не будет оплачен до этой даты, ему присваивается финальный статус EXPIRED и последующая оплата станет невозможна. | Строка в виде ГГГГ-ММ-ДДTччмм | — |
Открытие существующего счета
Пример открытия уже созданного счета в popup
Возможности при открытии ссылки счета
При выставлении счета через API в ответе приходит payUrl с ссылкой на форму оплаты. К ссылке можно добавить следующие параметры:
Готовые решения
SDK и библиотеки
Решения для CMS
Рекомендации к оформлению
Иконки
Данные рекомендации помогут вашим пользователям быстрее сориентироваться на странице выбора способов оплаты.
Допустимо отображение QIWI Кассы текстом, без логотипа. Иконки способов оплаты выводятся:
Инструкция по работе с 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 Мастер.
Хочу рассказать вам про такой class как Qiwi API Class PHP, точнее класс называется просто Qiwi API Class. Служит он для упрощения работы с API системой Qiwi. Данный класс облегчит разработку при необходимости использовать API от Qiwi. Чем он поможет? Да все просто, в классе есть все необходимое для работы с персональным кошельком, причем все запросы готовы к использованию и вам нужно лишь только правильно воспользоваться ими. Давайте разберемся в нем более детально (ссылка для скачивания класса в конце статьи).
Как работает Qiwi API Class PHP:
Класс авторизуется в кошельке через специальное API от Qiwi, то есть вам не нужно вводить никакие пароли и светить ими, ожидаю что их сопрут. Все работает на уровне самого Qiwi, то есть через официальное API. Что на мой взгляд достаточно удобно, нежели как раньше некоторые использовали Curl, для получения и обработки данных с кошелька.
Ранее я сказал, что класс нужен для работы с персональным кошельком, да это действительно так. Он работает только с персональным кошельком, причем вам не нужно проходить идентификацию и не нужно подключаться к ishop от qiwi.
Для работы с классом вам потребуется само собой qiwi кошелек, а именно номер киви кошелька и его token. Как получить токен говорить я не буду, в официальной документации все есть, причем вполне понятно и подробно.
Доступные методы:
Установка и подключение Qiwi API Class:
1. Скачайте архив с классом
2. Скопируйте Qiwi.php из папки src/ и подключите его в вашем скрипте:
Получение последних 50 записей из истории платежей за 30 дней:
Получение данных по определенной транзакции:
Вот собственно и все, с остальными методами работать можно по той же аналогии, что и с примерами выше. Если что-то непонятно будет, пишите в комментариях, также если найдете какие-то ошибки в работе класса пишите, буду исправлять по мере поступления и по мере свободного времени. Также если у вас есть предложения по расширению и обновлению класса, то пишите, будем вместе думать как лучше все сделать и стоит ли это того. Скачать самую последнюю версию класса вы можете по ссылке ниже, она ведет на GitHub, где всегда будет последняя версия. На этом все, всем спасибо за внимание.
Версия Qiwi API: Версия 1.4 от 15.05.2018
Версия Qiwi API Class PHP: Версия 1.2 от 26.05.2018
Похожее в блоге
Shnapik
Вебмастер с опытом ищет приют! Возьмите меня, а то меня рвут!
76 комментариев
Подскажите метод определения платежной системы банковской карты.
Если вы про перевод средств, то вот номера:
Всё есть в документации, здесь же (в классе), собраны лишь методы для удобно работы с ними, чтобы вам не писать постоянно одно и тоже, а можно лишь подключить его. В остальном всё как в документации работает.
Я имею в виду в класс добавить метод определения банковской карты (1963 VISA / 21013 MasterCard / 31652 МИР)
Необходимо получить ответ как в документации:
<
«code»: <
«value»: «0»,
«_name»: «NORMAL»
>,
«data»: null,
«message»: «1963»,
«messages»: null
>
Все методы из класса в правильном ответе получают то же, что и в документации. Если речь об этом, если нет, то немного не понимаю что конкретно нужно.
Какой метод из класса используете вы?
Данного метода в вашем классе нет.
В документации используются другие заголовки и хост:
POST /card/detect.action HTTP/1.1
Host: qiwi.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
cardNumber=4256********1231
Здесь будет другой запрос cURL.
Пробовал дописать метод, но он не работает:
Здравствуйте. Такая же проблема. Как решили вопрос с определением провайдера перед отправкой средств?
Дмитрий, понять какой метод используется, точнее параметр (его id), для метода sendMoneyToProvider. Можно извне, например при post запросе в селекте выбора карты (где value будет иметь идентификатор провайдера).
Заголовки же все те же используются:
Понять верна ли карта или нет, через данный класс не получится. Можно лишь это понять будет во время перевода, например когда мы отправляем средства и нам выдает ошибку. Вы можете написать свои функции с проверкой «правильно ли введены данные», например по длине символов.
При попытке передать деньги выводится ошибка
Array ( [message] => Json validation error List((obj.paymentMethod.accountId,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (obj.sum.currency,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (obj.id,List(ValidationError(List(error.expected.jsstring),WrappedArray())))) )
Другие методы класса тоже не работает
Метод перевода средств исправлен в примере, теперь всё работает как надо. В статье и на гитхабе новые примеры уже указаны Спасибо:)
постоянно выбивает «Техническая ошибка»
При каких обстоятельствах? Какой метод используется? Как используется, что подключается кроме данного скрипта, как он подключается. Не хватает немного вот этой информации.
Пытаюсь перевести с Qiwi на Qiwi методом «sendMoneyToQiwi», в итоге когда делаю запрос выбивает «Техническая ошибка под кодом 300», подключается с помощью «require_once ‘Qiwi.php’;», без проблем работает «getBalance()», а вот перевод выбивает постоянно ошибку, уже какой день пробую а толку 0, хотя токен у меня разрешен на перевод без СМС
Код всего файла можно посмотреть?
Я не про код класса, он по идее остается неизменным. Я про код файла где подключается данный класс и в котором используются методы.
Условия использования
Последнее обновление: 09-09-2021
Для подключения на свой сайт сервиса приема переводов для физических лиц p2p необходимо иметь QIWI Кошелек со статусом идентификации «Основной» или «Профессиональный». Если Ваш кошелек имеет статус «Анонимный» – пройдите идентификацию удобным для вас способом. Для получения «Основного» статуса достаточно указать паспортные данные, для получения «Профессионального» статуса необходимо пройти очную идентификацию.
Рекомендуем получить «Профессиональный» статус. Такой статус имеет повышенные лимиты на остаток на балансе, сумму платежей и переводов в месяц, максимальную сумму одной операции. Подробнее про лимиты.
Рекомендуем ознакомиться с частыми вопросами по нашему сервису, а также с информацией о том, как избежать блокировки кошелька.
Активация p2p
Поздравляем! Вы можете приступить к интеграции.
Для работы API потребуются публичный и секретный ключи. Ключи создаются в разделе «API».
Схема работы с API
Пользователь формирует счет на вашей стороне.
Вы перенаправляете пользователя на платежную форму для выставления счета. Или выставляете счет по API и перенаправляете пользователя на созданную платежную форму.
Пользователь выбирает способ перевода и подтверждает перевод. По умолчанию подбирается оптимальный для пользователя способ перевода.
После перевода по счету вы получаете уведомление (предварительно настройте отправку уведомлений в Личном кабинете при создании ключей). Уведомления о переводе по счету содержат параметры авторизации, которые необходимо проверять на Вашем сервере.
Готовые решения
SDK и библиотеки
С руководством по работе с SDK можно ознакомиться здесь.
Решения для CMS
Авторизация
Ваши запросы авторизуются посредством секретного ключа API ( SECRET_KEY ). Параметр авторизации указывается в заголовке Authorization, значение которого формируется как «Bearer SECRET_KEY».
Публичный ключ ( PUBLIC_KEY ) используется для выставления счетов через форму.
Ключи создаются в личном кабинете на вкладке API после авторизации на p2p.qiwi.com.
Для выпуска пары ключей выполните следующие шаги:
Внизу страницы нажмите на кнопку Настроить.
Придумайте название паре ключей, чтобы упростить поиск в списке.
Подключите уведомления об оплате счетов, отметив Использовать эту пару ключей для серверных уведомлений об изменении статусов счетов.
В поле URL сервера для уведомлений укажите адрес вашего сервера, который будет обрабатывать уведомления об оплате, и нажмите на кнопку Создать.
Скопируйте в буфер секретный ключ и сохраните его в безопасном месте — в дальнейшем он не будет отображаться в интерфейсе. Используйте секретный ключ для запросов к API.
Выставление счета через форму
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается форма с выбором способа перевода. При использовании этого способа нельзя гарантировать, что все счета выставлены вами, в отличие от выставления по API.
REDIRECT →
URL https://oplata.qiwi.com/create
Параметры
Взаимодействие через API
1. Выставление счета
Доступно выставление счетов в рублях и тенге.
Также существует более простой способ выставления счета — непосредственно через вызов платежной формы
Запрос → PUT
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
2. Проверка статуса перевода по счету
Пример тела ответа при ошибке
Метод позволяет проверить статус перевода по счету. Рекомендуется его использовать после получения уведомления о переводе.
Запрос → GET
URL https://api.qiwi.com/partner/bill/v1/bills/HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
3. Отмена неоплаченного счета
Пример тела ответа при ошибке
Метод позволяет отменить счет, по которому не был выполнен перевод.
Запрос → POST
URL https://api.qiwi.com/partner/bill/v1/bills//reject
HEADERS
Ответ ←
Пример тела ответа при ошибке
HEADERS
Статусы оплаты счетов
Статус | Описание | Финальный |
---|---|---|
WAITING | Счет выставлен, ожидает оплаты | — |
PAID | Счет оплачен | + |
REJECTED | Счет отклонен | + |
EXPIRED | Время жизни счета истекло. Счет не оплачен | + |
Уведомления о переводе по счету
Адрес сервера для уведомлений указывается в личном кабинете p2p.qiwi.com при генерации ключей.
Перед началом работы с сервисом уведомлений прочитайте условия по интеграции API уведомлений.
Пулы IP-адресов, с которых сервисы QIWI отправляют уведомления:
Если ваш сервер обработки уведомлений работает за брандмауэром, необходимо добавить эти IP-адреса в список разрешенных адресов входящих TCP-пакетов.
Запрос ← POST
Уведомление представляет собой входящий POST-запрос.
Тело запроса содержит JSON-сериализованные данные счета (кодировка UTF-8).
HEADERS
Авторизация уведомлений
Алгоритм проверки подписи:
Объединить значения следующих параметров уведомления в одну строку с разделителем | :
где <*>– значение параметра. Все значения при проверке подписи должны трактоваться как строки.
Вычислить HMAC-хэш c алгоритмом хэширования SHA256:
hash = HMAС(SHA256, invoice_parameters, secret_key) Где:
Сравнить значение заголовка X-Api-Signature-SHA256 с результатом из п.2.
Строка и ключ подписи кодируются в UTF-8.
Данные
В уведомлении содержится информация о счете.
Поле | Описание | Тип |
---|---|---|
bill | Данные о счете | Object |
billId | Уникальный идентификатор счета в вашей системе, указанный при выставлении | String(200) |
siteId | Ваш идентификатор в системе p2p.qiwi | String |
amount | Данные о сумме счета | Object |
amount.value | Сумма счета, округленная до двух десятичных знаков в меньшую сторону | Number(6.2) |
amount.currency | Идентификатор валюты суммы счета (Alpha-3 ISO 4217 код) | String(3) |
status | Данные о статусе счета | Object |
status.value | Строковое значение статуса | String |
status.changedDateTime | Дата обновления статуса. Формат даты ГГГГ-ММ-ДДTЧЧ:ММ:ССZ | String |
customer | Данные о пользователе | Object |
customer.phone | Номер телефона (если был указан при выставлении счета) | String |
customer.email | E-mail пользователя (если был указан при выставлении счета) | String |
customer.account | Идентификатор пользователя в вашей системе (если был указан при выставлении счета) | String |
creationDateTime | Дата создания счета. Формат даты ГГГГ-ММ-ДДTЧЧ:ММ:ССZ | String |
expirationDateTime | Срок оплаты счета. Формат даты ГГГГ-ММ-ДДTЧЧ:ММ:СС+ЧЧ:ММ\-Z | String |
comment | Комментарий к счету | String(255) |
customFields | Дополнительные данные счета (если были указаны при выставлении счета). | Object |
version | Версия уведомлений | String |
Ответ →
HEADERS
После того, как был получен входящий запрос-уведомление, необходимо проверить подлинность цифровой подписи и отправить ответ.
Настройки формы и счета
При выставлении счета через API в ответе приходит payUrl с ссылкой на форму. К ссылке можно добавить следующие параметры:
Добавьте реферальные ссылки для платежей с сайта. Полная ссылка подтвердит реальность сайта и позволит избежать проблем с блокировкой кошелька. Платежи, проходящие со страницы без заголовка запроса Refer будут приводить к блокировке кошелька. Подробнее читайте в статье Как передавать реферальные ссылки.
Пример передачи реферальной ссылки
Персонализация
Вы можете настроить персонализированную форму оплаты – изменить свое имя на название магазина и настроить цвет фона и кнопок.
Перейдите в личном кабинете в раздел Форма приема переводов, нажмите на кнопку Настроить, произведите настройку и нажмите на кнопку Сохранить.
Пример передачи параметра при вызове платежной формы
Пример передачи параметра в запросе к API
Обратите внимание, что значение themeCode индивидуально для разных кошельков.
Для применения стиля к платежной форме:
Checkout Popup
Пример работы popup
Всплывающее окно (popup) позволяет открыть форму перевода поверх вашего сайта.
В библиотеке доступно два метода: открытие существующего счета и открытие вашей формы приема переводов.
Установка и подключение:
Открытие существующего счета
Пример открытия уже созданного счета в popup
Открытие персонализированной формы
Пример открытия персонализированной формы