qiwi api php sdk
Qiwi api php sdk
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 Кассы текстом, без логотипа. Иконки способов оплаты выводятся:

Qiwi api php sdk
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 внутри вашей системы, в результате будет получен ответ со статусом счета. Подробнее в документации — для физ.лиц, для юр.лиц.
Отмена неоплаченного счета
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 Кассы текстом, без логотипа. Иконки способов оплаты выводятся:

Qiwi api php sdk
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, а так же в документации для физ.лиц и для юр. лиц
Информация о счете
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 Кассы текстом, без логотипа. Иконки способов оплаты выводятся:
Qiwi api php sdk
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:
Условия использования
Последнее обновление: 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
Открытие персонализированной формы
Пример открытия персонализированной формы