Вопрос знатокам: Вот допустив в личном кабинете сделать так что бы показывало что кол-во нобусов не 0 а допустим то число которое я захотел. но на самом деле их тм нету. Мне говорили так можно а вот как я не знаю. Может сталкивался кто, помогите.
С уважением, Александр Ивенский
Лучшие ответы
Jonathan Archer:
Нажимаешь ф12 и ищешь чо надо поменять и исправляешь
Ответчик:
Жмешь правой кнопкой мыши по странице, выбираешь в появившемся меню «просмотреть исходный код» или «код элемента», ищешь нужную тебе величину, жмешь правой кнопкой мыши по ней и в меню выбираешь «редактировать как… «, редактируешь на нужную и радуешься.
Данил Попов:
Ни где нельзя менять цифры! Вот создай свой браузер и меняй что хочешь в программном коде
_:
В Фаерфоксе кликаешь правой кнопкой мыши по нужному тексту. Появится контекстное меню. Жми на «исследовать элемент». Внизу откроется панель с хтмл-кодом страницы, нужный тебе элемент будет выделен, нажми там на стрелочку. Увидишь нужный текст, жми по нему два раза, он выделится. Готово, можешь менять.
В хроме вроде бы тоже самое, только вместо «исследовать элемент» там будет «просмотр кода элемента».
кирилл котов:
Визуально можно, а изменить что то на сайте нельзя…
Геннадий Поляков:
правильный ответ здесь genaprostak /ref/32
Karina Kat:
Кликаешь правой кнопкой мыши, выделяешь что хочешь моенять, нажимаешь исследовать элемент, ищешь неподалёку от показанной схемы то что тебе нужно, нажимаешь 2 раза, исправляешь что нужно) Работает. Сделала звезде вместо 21 года 11 лет. Так смеялась)) Вот что получилось)))
Бога принесли его в свет: 83 февраля 158 г. (1 861 год), Мухосранск Чунго остров
Видео-ответ
Это видео поможет разобраться
Ответы знатоков
Диана Семиклит:
Чё?
ㅤ:
За тобой уже выехали, жди…
Евгений Покровский:
Вообще непонятно, что Вы хотите. «Визуально»? «Перезагрузка?» Тут 2 варианта.
1. Положите реальные деньги на QIWI кошелек, чтобы они были на счете. При любой перезагрузке любого устройства они там останутся.
2. Adobe Photoshop или любой графический редактор. Нарисуйте, сколько Вам надо, на счете — и «визуально» будет, и при «перезагрузке», опять же, останутся.
Введение
Последнее обновление: 2022-10-20 | Эта страница на GitHub
API QIWI Кошелька позволяет автоматизировать получение информации о вашем счёте в сервисе QIWI Кошелек и проводить операции с его помощью.
Методы API доступны после регистрации пользователя в сервисе QIWI Кошелек.
Авторизация запросов
-
Авторизация
Параметр | Описание | Тип |
---|---|---|
Bearer token | Токен для доступа к вашему QIWI кошельку по API. Действие токена заканчивается через 180 дней после выпуска. Одновременно может действовать только один токен. | String |
Основной URL-адрес для вызова методов API (если не указано иное):
https://edge.qiwi.com
Для успешного вызова методов API необходимы:
- Корректные значения HTTP-заголовков
Accept
иContent-Type
в запросе. API QIWI Кошелька поддерживает только один MIME-тип:application/json
. Любое другое значение приведет к ошибке формата данных. - URL, составленный согласно требованиям к нужному запросу.
- OAuth-токен, выданный вам для доступа к вашему QIWI кошельку. Для некоторых запросов его не потребуется.
Получение OAuth-токена
API QIWI Кошелька использует открытый протокол OAuth 2.0. Согласно протоколу, пользователь авторизуется или регистрируется на сайте https://qiwi.com и запрашивает токен OAuth 2.0 Bearer с правом выполнения определённых действий. Выпуск токена подтверждается одноразовым кодом из СМС.
Для выпуска токена выполните следующие шаги:
-
Откройте в браузере страницу https://qiwi.com/api. Для этого потребуется авторизоваться или зарегистрироваться в сервисе QIWI Кошелек. После этого нажмите Выпустить новый токен.
- Во всплывающем окне выберите разрешения на операции с токеном и нажмите Продолжить:
- Запрос информации о профиле кошелька — выполнение запросов профиля пользователя, идентификации, лимитов.
- Запрос баланса кошелька — выполнение запросов баланса.
- Просмотр истории платежей — выполнение запросов истории платежей.
- Проведение платежей без SMS — выполнение платежных запросов без подтверждения по SMS, оплата счетов, использование уведомлений.
- Управление виртуальными картами — API управления и выпуска карт QIWI-Мастер. Внимание! Для доступа к API также добавьте разрешения на операции Запрос информации о профиле кошелька, Просмотр истории платежей, Проведение платежей без SMS.
-
Подтвердите согласие на выпуск токена и нажмите Продолжить.
-
Укажите проверочный код из SMS-сообщения, отправленного на номер вашего кошелька.
-
Скопируйте строку токена и сохраните в безопасном месте. Используйте токен для запросов к API QIWI Кошелька.
Пример вызова API
curl "адрес сервера"
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API QIWI Кошелька>"
Полученный токен следует передавать в заголовке Authorization
при каждом вызове API, указывая тип токена Bearer
перед его значением. Пример получения такого заголовка:
- В результате авторизации на сайте QIWI Кошелек и выпуска токена получен токен, представляющий собой строку:
U1QtOTkwMTAyLWNud3FpdWhmbzg3M
-
Токен добавляется в заголовок
Authorization: Bearer
-
Итоговый заголовок, добавляемый в каждый запрос к API QIWI Кошелька:
Authorization: Bearer U1QtOTkwMTAyLWNud3FpdWhmbzg3M
Профиль пользователя
Последнее обновление: 2020-07-06 | Предложить правки на GitHub
Запрос возвращает информацию о вашем профиле — наборе пользовательских данных и настроек вашего QIWI кошелька.
Запрос → GET
curl "https://edge.qiwi.com/person-profile/v1/profile/current?authInfoEnabled=false"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /person-profile/v1/profile/current HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# Профиль пользователя
def get_profile(api_access_token):
s7 = requests.Session()
s7.headers['Accept']= 'application/json'
s7.headers['authorization'] = 'Bearer ' + api_access_token
p = s7.get('https://edge.qiwi.com/person-profile/v1/profile/current?authInfoEnabled=true&contractInfoEnabled=true&userInfoEnabled=true')
return p.json()
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# Полная информация о профиле пользователя
profile = get_profile(api_access_token)
# Профиль пользователя
# статус блокировки
profile['contractInfo']['blocked']
# Профиль пользователя
# уровень идентификации в Киви Банке
profile['contractInfo']['identificationInfo'][0]['identificationLevel']
# привязанный email
profile['authInfo']['boundEmail']
-
URL /person-profile/v1/profile/current?parameter=value
-
Параметры
Данные параметры передаются в строке запроса и не являются обязательными:
Название | Тип | Описание |
---|---|---|
authInfoEnabled | Boolean | Логический признак выгрузки настроек авторизации. По умолчанию true |
contractInfoEnabled | Boolean | Логический признак выгрузки данных о вашем QIWI кошельке. По умолчанию true |
userInfoEnabled | Boolean | Логический признак выгрузки прочих пользовательских данных. По умолчанию true |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"authInfo": {
"boundEmail": "m@ya.ru",
"ip": "81.210.201.22",
"lastLoginDate": "2017-07-27T06:51:06.099Z",
"mobilePinInfo": {
"lastMobilePinChange": "2017-07-13T11:22:06.099Z",
"mobilePinUsed": true,
"nextMobilePinChange": "2017-11-27T06:51:06.099Z"
},
"passInfo": {
"lastPassChange": "2017-07-21T09:25:06.099Z",
"nextPassChange": "2017-08-21T09:25:06.099Z",
"passwordUsed": true
},
"personId": 79683851815,
"pinInfo": {
"pinUsed": true
},
"registrationDate": "2017-01-07T16:51:06.100Z"
},
"contractInfo": {
"blocked": false,
"contractId": 79683851815,
"creationDate": "2017-01-07T16:51:06.100Z",
"features": [
...
],
"identificationInfo": [
{
"bankAlias": "QIWI",
"identificationLevel": "SIMPLE",
"passportExpired": false
}
]
},
"userInfo": {
"defaultPayCurrency": 643,
"defaultPaySource": 7,
"email": null,
"firstTxnId": 10807097143,
"language": "string",
"operator": "Beeline",
"phoneHash": "lgsco87234f0287",
"promoEnabled": null
}
}
Успешный JSON-ответ содержит следующие данные:
Поле ответа | Тип | Описание |
---|---|---|
authInfo | Object | Текущие настройки авторизации. Объект может отсутствовать, в зависимости от признака authInfoEnabled в запросе. |
authInfo.personId | Number | Номер кошелька |
authInfo.registrationDate | String | Дата/время регистрации QIWI Кошелька (через сайт/мобильное приложение, либо другим способом) |
authInfo.boundEmail | String | E-mail, привязанный к кошельку. Если отсутствует, то null |
authInfo.ip | String | IP-адрес последней пользовательской сессии |
authInfo.lastLoginDate | String | Дата/время последней сессии в QIWI Кошельке |
authInfo.mobilePinInfo | Object | Данные о PIN-коде мобильного приложения QIWI Кошелька |
mobilePinInfo.mobilePinUsed | Boolean | Логический признак использования PIN-кода (фактически означает, что мобильное приложение используется) |
mobilePinInfo.lastMobilePinChange | String | Дата/время последнего изменения PIN-кода мобильного приложения QIWI Кошелька |
mobilePinInfo.nextMobilePinChange | String | Дата/время следующего (планового) изменения PIN-кода мобильного приложения QIWI Кошелька |
authInfo.passInfo | Object | Данные об использовании пароля к сайту qiwi.com |
passInfo.passwordUsed | Boolean | Логический признак использования пароля (фактически означает использование сайта qiwi.com) |
passInfo.lastPassChange | String | Дата/время последнего изменения пароля сайта qiwi.com |
passInfo.nextPassChange | String | Дата/время следующего (планового) изменения пароля сайта qiwi.com |
authInfo.pinInfo | Object | Данные об использовании PIN-кода к приложению QIWI Кошелька на QIWI терминалах самообслуживания |
pinInfo.pinUsed | Boolean | Логический признак использования PIN-кода для терминала (фактически означает факт использования приложения QIWI Кошелька на терминале) |
contractInfo | Object | Информация о кошельке. Объект может отсутствовать, в зависимости от признака contractInfoEnabled в запросе. |
contractInfo.blocked | Boolean | Логический признак блокировки кошелька |
contractInfo.contractId | Number | Номер кошелька |
contractInfo.creationDate | String | Дата/время создания QIWI Кошелька (через сайт/мобильное приложение, либо при первом пополнении, либо другим способом) |
contractInfo.features | Array[Object] | Служебная информация |
contractInfo.identificationInfo | Array[Object] | Данные об идентификации пользователя. |
identificationInfo[].bankAlias | String | Акроним системы, в которой пользователь получил идентификацию:QIWI — QIWI Кошелек. |
identificationInfo[].identificationLevel | String | Текущий уровень идентификации кошелька. Возможные значения:ANONYMOUS — без идентификации;SIMPLE , VERIFIED — упрощенная идентификация;FULL — полная идентификация. |
identificationInfo[].passportExpired | Boolean | Информация об актуальности паспортных данных владельца кошелька (true означает, что паспортные данные недействительны). |
userInfo | Object | Прочие пользовательские данные. Объект может отсутствовать, в зависимости от признака userInfoEnabled в запросе. |
userInfo.defaultPayCurrency | Number(3) | Код валюты баланса кошелька по умолчанию (ISO-4217) |
userInfo.defaultPaySource | Number | Служебная информация |
userInfo.email | String | E-mail пользователя |
userInfo.firstTxnId | Number | Номер первой транзакции после регистрации |
userInfo.language | String | Служебная информация |
userInfo.operator | String | Название мобильного оператора номера пользователя |
userInfo.phoneHash | String | Служебная информация |
userInfo.promoEnabled | String | Служебная информация |
Идентификация
Подробнее об идентификации
Идентификация пользователя
Запрос позволяет отправить данные для идентификации вашего QIWI кошелька.
Для получения статуса «Основной» необходимо предоставить следующие данные о пользователе-владельце кошелька:
- ФИО
- Серия / Номер паспорта
- Дата рождения
- ИНН, СНИЛС или номер полиса ОМС — необязательно.
Для идентификации кошелька вы обязательно должны отправить ФИО, серию/номер паспорта и дату рождения. Если данные прошли проверку, то в ответе будет отображен ваш ИНН и упрощенная идентификация кошелька будет установлена. В случае если данные не прошли проверку, кошелек остается в статусе «Минимальный».
Запрос → POST
curl -X POST
"https://edge.qiwi.com/identification/v1/persons/79111234567/identification"
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"birthDate": "1998-02-11",
"firstName": "Иван",
"inn": "",
"lastName": "Иванов",
"middleName": "Иванович",
"oms": "",
"passport": "4400111222",
"snils": ""
}'
POST /identification/v1/persons/79111234567/identification HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Content-type: application/json
Host: edge.qiwi.com
{
"birthDate": "1998-02-11",
"firstName": "Иван",
"inn": "",
"lastName": "Иванов",
"middleName": "Иванович",
"oms": "",
"passport": "4400111222",
"snils": ""
}
import requests
# идентификация
def get_identification(api_access_token, my_login):
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + api_access_token
res = s.get('https://edge.qiwi.com/identification/v1/persons/'+my_login+'/identification')
return res.json()
-
URL /identification/v1/persons/wallet/identification
- wallet — номер вашего кошелька без знака «+»
-
Параметры
Данные параметры передаются в JSON-теле запроса:
Название | Тип | Описание |
---|---|---|
birthDate | String | Дата рождения пользователя (в формате «ГГГГ-ММ-ДД») |
firstName | String | Имя пользователя |
middleName | String | Отчество пользователя |
lastName | String | Фамилия пользователя |
passport | String | Серия и номер паспорта пользователя (только цифры) |
inn | String | ИНН пользователя |
snils | String | Номер СНИЛС пользователя |
oms | String | Номер полиса ОМС пользователя |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"birthDate": "1996-03-18",
"firstName": "Иван",
"id": 79111234567,
"inn": "7710000001",
"lastName": "Иванов",
"middleName": "Иванович",
"oms": "",
"passport": "1122333000",
"snils": "",
"type": "VERIFIED"
}
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
print(get_identification(api_access_token, mylogin))
{'birthDate': '1984-01-09',
'firstName': 'Иванов',
'id': 79262111317,
'inn': 'xxxxxxx',
'lastName': 'Иванов',
'middleName': 'Иванович',
'oms': None,
'passport': 'xxxx xxxxxx',
'snils': None,
'type': 'FULL'}
Успешный ответ в формате JSON содержит подтверждение идентификации кошелька:
Поле ответа | Тип | Описание |
---|---|---|
id | Number | Номер кошелька пользователя |
type | String | Текущий статус кошелька:SIMPLE — «Минимальный».VERIFIED — «Основной» (данные для идентификации успешно прошли проверку).FULL – «Профессиональный», если кошелек уже ранее получал полную идентификацию по данным ФИО, номеру паспорта и дате рождения. |
birthDate | String | Дата рождения пользователя |
firstName | String | Имя пользователя |
middleName | String | Отчество пользователя |
lastName | String | Фамилия пользователя |
passport | String | Серия и номер паспорта пользователя |
inn | String | ИНН пользователя. Если в запросе параметр не заполнен, но присутствует в ответе, то идентификация кошелька выполнена. |
snils | String | Номер СНИЛС пользователя |
oms | String | Номер полиса ОМС пользователя |
Данные идентификации
Запрос позволяет выгрузить маскированные данные и статус идентификации своего QIWI кошелька.
Запрос → GET
curl -X GET
"https://edge.qiwi.com/identification/v1/persons/79111234567/identification"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /identification/v1/persons/79111234567/identification HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
-
URL /identification/v1/persons/wallet/identification
- wallet — номер вашего кошелька без знака «+»
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"birthDate": "1996-03-18",
"firstName": "Иван",
"id": 79111234567,
"inn": "77***01",
"lastName": "Иванов",
"middleName": "Иванович",
"oms": "",
"passport": "43***11",
"snils": "",
"type": "VERIFIED"
}
Успешный ответ в формате JSON содержит маскированные данные идентификации кошелька:
Поле ответа | Тип | Описание |
---|---|---|
id | Number | Номер кошелька пользователя |
type | String | Текущий статус кошелька:SIMPLE — «Минимальный».VERIFIED — «Основной» (данные для идентификации успешно прошли проверку).FULL – «Профессиональный», если кошелек уже ранее получал полную идентификацию по данным ФИО, номеру паспорта и дате рождения. |
birthDate | String | Дата рождения пользователя |
firstName | String | Имя пользователя |
middleName | String | Отчество пользователя |
lastName | String | Фамилия пользователя |
passport | String | Серия и номер паспорта пользователя (первые и последние 2 цифры) |
inn | String | ИНН пользователя (первые и последние 2 цифры) |
snils | String | Номер СНИЛС пользователя (первые и последние 2 цифры) |
oms | String | Номер полиса ОМС пользователя (первые и последние 2 цифры) |
Понижение уровня идентификации
Вы можете понизить уровень идентификации вашего QIWI кошелька.
На данный момент понижение доступно только с уровня «Профессиональный» до уровня «Основной».
Для понижения уровня необходимо сделать 2 запроса:
- Создание заявки на понижение уровня идентификации.
- Подтверждение заявки на понижение уровня идентификации.
Создание заявки на понижение уровня идентификации
Запрос → POST
curl -X POST
"https://edge.qiwi.com/qw-ident-downgrade-api/v1/persons/79111234567/identification-downgrade/operations"
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"identificationLevel": "VERIFIED"
}'
POST /qw-ident-downgrade-api/v1/persons/79111234567/identification-downgrade/operations HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Content-type: application/json
Host: edge.qiwi.com
{
"identificationLevel": "VERIFIED"
}
-
URL /qw-ident-downgrade-api/v1/persons/wallet/identification-downgrade/operations
- wallet — номер вашего кошелька без знака «+»
-
Параметры
Данные параметры передаются в JSON-теле запроса:
Название | Тип | Описание |
---|---|---|
identificationLevel | String | Уровень, до которого требуется понизить идентификацию (на данный момент понижение возможно только до статуса «Основной» — VERIFIED ) |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"downgradeOperationId": "1747ea28-1082-41bc-bde4-72994b3ffeb4"
}
Успешный ответ в формате JSON содержит ID заявки на понижение уровня идентификации:
Поле ответа | Тип | Описание |
---|---|---|
downgradeOperationId | String | ID заявки на понижение уровня идентификации |
Подтверждение заявки на понижение уровня идентификации
Запрос → PUT
curl -X PUT
https://edge.qiwi.com/qw-ident-downgrade-api/v1/persons/79111234567/identification-downgrade/operations/1747ea28-1082-41bc-bde4-72994b3ffeb4/confirm
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{}'
PUT /qw-ident-downgrade-api/v1/persons/79111234567/identification-downgrade/operations/1747ea28-1082-41bc-bde4-72994b3ffeb4/confirm HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Content-type: application/json
Host: edge.qiwi.com
{}
-
URL /qw-ident-downgrade-api/v1/persons/wallet/identification-downgrade/operations/downgradeOperationId/confirm
- wallet — номер вашего кошелька без знака «+»
- downgradeOperationId — ID вашей заявки на понижение уровня идентификации
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"downgradeOperation": {
"downgradeOperationId": "1747ea28-1082-41bc-bde4-72994b3ffeb4",
"status": {
"type": "IN_PROGRESS"
}
}
}
Успешный ответ в формате JSON содержит информацию о заявке на понижение уровня идентификации:
Поле ответа | Тип | Описание |
---|---|---|
downgradeOperation.downgradeOperationId | String | ID заявки на понижение уровня идентификации |
downgradeOperation.status.type | String | Статус заявки на понижение уровня идентификации. IN_PROGRESS — Заявка на понижение уровня идентификации в обработке. Вы можете проверять текущий статус заявки отдельным запросом (см. ниже). SUCCESS — Заявка на понижение уровня идентификации успешно обработана. FAIL – Понижение уровня идентификации невозможно. |
Запрос статуса заявки на понижение уровня идентификации
Запрос → GET
curl -X GET
https://edge.qiwi.com/qw-ident-downgrade-api/v1/persons/79111234567/identification-downgrade/operations/1747ea28-1082-41bc-bde4-72994b3ffeb4
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /qw-ident-downgrade-api/v1/persons/79111234567/identification-downgrade/operations/1747ea28-1082-41bc-bde4-72994b3ffeb4 HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
-
URL /qw-ident-downgrade-api/v1/persons/wallet/identification-downgrade/operations/downgradeOperationId
- wallet — номер вашего кошелька без знака «+»
- downgradeOperationId — ID вашей заявки на понижение уровня идентификации
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"downgradeOperation": {
"downgradeOperationId": "1747ea28-1082-41bc-bde4-72994b3ffeb4",
"status": {
"type": "SUCCESS"
}
}
}
Успешный ответ в формате JSON содержит информацию о заявке на понижение уровня идентификации:
Поле ответа | Тип | Описание |
---|---|---|
downgradeOperation.downgradeOperationId | String | ID заявки на понижение уровня идентификации |
downgradeOperation.status.type | String | Статус заявки на понижение уровня идентификации. IN_PROGRESS — Заявка на понижение уровня идентификации в обработке. SUCCESS — Заявка на понижение уровня идентификации успешно обработана. FAIL – Понижение уровня идентификации невозможно. |
Лимиты QIWI Кошелька
Уровни лимитов
Запрос возвращает текущие уровни лимитов по операциям в вашем QIWI кошельке. Лимиты действуют как ограничения на сумму определенных операций.
Запрос → GET
curl "https://edge.qiwi.com/qw-limits/v1/persons/79115221133/actual-limits?types%5B0%5D=TURNOVER"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /qw-limits/v1/persons/79115221133/actual-limits?types%5B0%5D=TURNOVER HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# Все лимиты QIWI Кошелька
def limits(login, api_access_token):
types = [ 'TURNOVER', 'REFILL', 'PAYMENTS_P2P', 'PAYMENTS_PROVIDER_INTERNATIONALS', 'PAYMENTS_PROVIDER_PAYOUT', 'WITHDRAW_CASH']
s = requests.Session()
s.headers['Accept']= 'application/json'
s.headers['Content-Type']= 'application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
parameters = {}
for i, type in enumerate(types):
parameters['types[' + str(i) + ']'] = type
b = s.get('https://edge.qiwi.com/qw-limits/v1/persons/' + login + '/actual-limits', params = parameters)
return b.json()
-
URL /qw-limits/v1/persons/personId/actual-limits?parameter=value
- personId — номер вашего кошелька без знака «+»
-
Параметры
Данные параметры передаются в строке запроса:
Название | Тип | Описание |
---|---|---|
types | Array[String] | Список типов операций, по которым запрашиваются лимиты. Каждый тип нумеруется элементом массива, начиная с нуля (types[0] , types[1] и т.д.). Допустимые типы операций:REFILL — максимальный допустимый остаток на счётеTURNOVER — оборот в месяцPAYMENTS_P2P — переводы на другие кошельки в месяцPAYMENTS_PROVIDER_INTERNATIONALS — платежи в адрес иностранных компаний в месяцPAYMENTS_PROVIDER_PAYOUT — Переводы на банковские счета и карты, кошельки других системWITHDRAW_CASH — снятие наличных в месяц. Должен быть указан хотя бы один тип операций. |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"limits":{
"RU" :[
{
"type": "TURNOVER",
"currency": "RUB",
"rest": 200.00,
"max": 40000.00,
"spent": 39800.00,
"interval": {
"dateFrom": "2019-11-01T:00:00",
"dateTill": "2019-12-01T00:00"
}
},
...
]
}
}
# номер кошелька в формате 79992223344
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# все лимиты (список)
limits = limits(mylogin,api_access_token)['limits']['RU']
# лимит оборота
turnoverInfo = [x for x in limits if x['type'] == 'TURNOVER']
turnoverLimit = turnoverInfo[0]['rest']
Успешный ответ содержит JSON-массив лимитов по операциям вашего QIWI Кошелька:
Поле ответа | Тип | Описание |
---|---|---|
limits | Object | Описание лимитов |
limits[].’RU’ | Array[Object] | Массив лимитов на операции |
type | String | Тип операций, на которые действует этот лимит |
currency | String | Валюта операций |
max | String | Значение лимита |
spent | String | Сумма, потраченная по данным операциям |
rest | Boolean | Остаток лимита, который можно потратить в указанный период (период задается в параметре interval ) |
interval | Object | Сведения о периоде действия лимита |
interval.dateFrom, interval.dateTill | String | Начало и конец периода, формат даты ГГГГ-ММ-ДДТЧЧ:ММ:ССtmz |
Лимит по операциям с физлицами
Запрос возвращает значение количества операций с физлицами за текущий месяц в вашем QIWI кошельке.
Запрос → GET
curl "https://edge.qiwi.com/qw-limits/v1/persons/79999999999/p2p-payment-count-limit"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /qw-limits/v1/persons/79999999999/p2p-payment-count-limit HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# Количество операций с физлицами
def get_p2p_payment_count(login, api_access_token):
s = requests.Session()
s.headers['Accept']= 'application/json'
s.headers['Content-Type']= 'application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
b = s.get('https://edge.qiwi.com/qw-limits/v1/persons/' + login + '/p2p-payment-count-limit')
return b.json()
-
URL /qw-limits/v1/persons/personId/p2p-payment-count-limit
- personId — номер вашего кошелька без знака «+»
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"p2pPaymentCountLimit": 1
}
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# Количество операций с физлицами за текущий месяц
print(get_p2p_payment_count(api_access_token, mylogin))
{'p2pPaymentCountLimit': 1}
Успешный ответ в формате JSON содержит информацию по операциям вашего QIWI Кошелька:
Поле ответа | Тип | Описание |
---|---|---|
p2pPaymentCountLimit | Number | Kоличество операций с физлицами в месяце |
Проверка ограничений исходящих платежей с QIWI Кошелька
Следующий запрос проверяет, есть ли ограничение на исходящие платежи с QIWI Кошелька.
Запрос → GET
curl "https://edge.qiwi.com/person-profile/v1/persons/79115221133/status/restrictions"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /person-profile/v1/persons/79115221133/status/restrictions HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# Блокировки
def get_restrictions(api_access_token, mylogin):
s7 = requests.Session()
s7.headers['Accept']= 'application/json'
s7.headers['authorization'] = 'Bearer ' + api_access_token
p = s7.get('https://edge.qiwi.com/person-profile/v1/persons/' + mylogin + '/status/restrictions')
return p.json()
-
URL /person-profile/v1/persons/personId/status/restrictions
- personId — номер вашего кошелька без знака «+»
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"restrictionCode": "OUTGOING_PAYMENTS",
"restrictionDescription": "Исходящие платежи заблокированы"
}
]
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
print(get_restrictions(api_access_token, mylogin))
[
{
"restrictionCode": "OUTGOING_PAYMENTS",
"restrictionDescription": "Исходящие платежи заблокированы"
}
]
Успешный ответ содержит JSON-массив ограничений кошелька с их описанием:
Поле ответа | Тип | Описание |
---|---|---|
restrictionCode | String | Код блокировки |
restrictionDescription | String | Описание блокировки |
Возможные значения:
restrictionCode | restrictionDescription |
---|---|
OUTGOING_PAYMENTS | Исходящие платежи заблокированы |
Если ограничений нет, возвращается пустой массив.
История платежей
Последнее обновление: 2020-07-06 | Предложить правки на GitHub
Список платежей
Запрос выгружает список платежей и пополнений вашего кошелька. Можно использовать фильтр по количеству, ID и дате (интервалу дат) транзакций.
Потестировать
Запрос → GET
Пример 1. Последние 10 платежей
curl "https://edge.qiwi.com/payment-history/v2/persons/<wallet>/payments?rows=10"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
Пример 2. Платежи за 10.05.2017
curl "https://edge.qiwi.com/payment-history/v2/persons/<wallet>/payments?rows=50&startDate=2017-05-10T00%3A00%3A00%2B03%3A00&endDate=2017-05-10T23%3A59%3A59%2B03%3A00"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
Пример 3. Продолжение списка платежей (в предыдущем запросе истории возвращены параметры nextTxnId=9103121 и nextTxnDate=2017-05-11T12:35:23+03:00)
curl "https://edge.qiwi.com/payment-history/v2/persons/<wallet>/payments?rows=50&nextTxnId=9103121&nextTxnDate=2017-05-11T12%3A35%3A23%2B03%3A00"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
Пример 4. Последние 10 платежей с рублевого баланса и с привязанной карты
GET /payment-history/v2/persons/<wallet>/payments?rows=10&operation=OUT&sources%5B0%5D=QW_RUB&sources%5B1%5D=CARD HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
Пример 5. Платежи за 10.05.2017 с рублевого счета
GET /payment-history/v2/persons/<wallet>/payments?rows=50&sources%5B0%5D=QW_RUB&startDate=2017-05-10T00%3A00%3A00%2B03%3A00&endDate=2017-05-10T23%3A59%3A59%2B03%3A00 HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
Пример 6. Продолжение списка платежей за 10.05.2017 (в Примере 2 возвращены параметры nextTxnId=9103121 и nextTxnDate=2017-05-11T12:35:23+03:00)
GET /payment-history/v2/persons/<wallet>/payments?rows=50&nextTxnId=9103121&nextTxnDate=2017-05-11T12%3A35%3A23%2B03%3A00 HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# История платежей - последние и следующие n платежей
def payment_history_last(my_login, api_access_token, rows_num, next_TxnId, next_TxnDate):
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + api_access_token
parameters = {'rows': rows_num, 'nextTxnId': next_TxnId, 'nextTxnDate': next_TxnDate}
h = s.get('https://edge.qiwi.com/payment-history/v2/persons/' + my_login + '/payments', params = parameters)
return h.json()
-
URL /payment-history/v2/persons/wallet/payments?parameter=value
- wallet — номер вашего кошелька без знака «+»
-
Параметры
Данные параметры передаются в строке запроса:
Название | Тип | Описание |
---|---|---|
rows | Integer | Число платежей в ответе, для разбивки отчета на страницы. Целое число от 1 до 50. Запрос возвращает указанное число платежей в обратном хронологическом порядке, начиная от текущей даты или даты в параметре startDate . Обязательный параметр |
operation | String | Тип операций в отчете, для отбора. Допустимые значения:ALL — все операции, IN — только пополнения, OUT — только платежи, QIWI_CARD — только платежи по картам QIWI (QVC, QVP). По умолчанию ALL |
sources | Array[String] | Список источников платежа, для фильтра. Каждый источник нумеруется, начиная с нуля (sources[0] , sources[1] и т.д.). Допустимые значения: QW_RUB — рублевый счет кошелька, QW_USD — счет кошелька в долларах, QW_EUR — счет кошелька в евро, CARD — привязанные и непривязанные к кошельку банковские карты, MK — счет мобильного оператора. Если не указан, учитываются все источники |
startDate | DateTime URL-encoded | Начальная дата поиска платежей. Используется только вместе с endDate . Максимальный допустимый интервал между startDate и endDate — 90 календарных дней. По умолчанию, равна суточному сдвигу от текущей даты по московскому времени.Дату можно указать в любой временной зоне TZD (формат ГГГГ-ММ-ДД'T'чч:мм:ссTZD ), однако она должна совпадать с временной зоной в параметре endDate . Обозначение временной зоны TZD : +чч:мм или —чч:мм (временной сдвиг от GMT). |
endDate | DateTime URL-encoded | Конечная дата поиска платежей. Используется только вместе со startDate . Максимальный допустимый интервал между startDate и endDate — 90 календарных дней. По умолчанию, равна текущим дате/времени по московскому времени. Дату можно указать в любой временной зоне TZD (формат ГГГГ-ММ-ДД'T'чч:мм:ссTZD ), однако она должна совпадать с временной зоной в параметре startDate . Обозначение временной зоны TZD : +чч:мм или —чч:мм (временной сдвиг от GMT). |
nextTxnDate | DateTime URL-encoded | Дата транзакции для начала отчета (должна быть равна параметру nextTxnDate в предыдущем списке). Используется для продолжения списка, разбитого на страницы. Используется только вместе с nextTxnId |
nextTxnId | Long | Номер транзакции для начала отчета (должен быть равен параметру nextTxnId в предыдущем списке). Используется для продолжения списка, разбитого на страницы. Используется только вместе с nextTxnDate |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{"data":
[
{
"txnId":9309,
"personId":79112223344,
"date":"2017-01-21T11:41:07+03:00",
"errorCode":0,
"error":null,
"status":"SUCCESS",
"type":"OUT",
"statusText":"Успешно",
"trmTxnId":"1489826461807",
"account":"0003***",
"sum":{
"amount":70,
"currency":643
},
"commission":{
"amount":0,
"currency":643
},
"total":{
"amount":70,
"currency":643
},
"provider":{
...
},
"source": {},
"comment":"",
"currencyRate":1,
"extras":null,
"chequeReady":true,
"bankDocumentAvailable":false,
"bankDocumentReady":false,
"repeatPaymentEnabled":false,
"favoritePaymentEnabled": true,
"regularPaymentEnabled": true
}
],
"nextTxnId":9001,
"nextTxnDate":"2017-01-31T15:24:10+03:00"
}
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# последние 20 платежей
lastPayments = payment_history_last(mylogin, api_access_token, '5','','')
# дата и время следующего платежа
nextTxnDate = lastPayments['nextTxnDate']
# id транзакции следующего платежа
nextTxnId = lastPayments['nextTxnId']
# История платежей - последние и следующие n платежей
orderedPayments = payment_history_last(mylogin, api_access_token, '5', nextTxnId, nextTxnDate)
Успешный JSON-ответ содержит список платежей из истории кошелька, соответствующих заданному фильтру:
Поле ответа | Тип | Описание |
---|---|---|
data | Array[Object] | Список объектов Transaction. Число транзакций в списке меньше или равно параметру rows из запроса |
nextTxnId | Number(Integer) | ID следующей транзакции в полном списке |
nextTxnDate | DateTime | Дата/время следующей транзакции в полном списке, время московское (в формате ГГГГ-ММ-ДД'T'чч:мм:сс+03:00 ) |
Статистика платежей
Запрос используется для получения сводной статистики по суммам платежей за указанный период.
Потестировать
Запрос → GET
curl "https://edge.qiwi.com/payment-history/v2/persons/<wallet>/payments/total?startDate=2017-03-01T00%3A00%3A00%2B03%3A00&endDate=2017-03-31T11%3A44%3A15%2B03%3A00"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /payment-history/v2/persons/<wallet>/payments/total?startDate=2017-03-01T00%3A00%3A00%2B03%3A00&endDate=2017-03-31T11%3A44%3A15%2B03%3A00 HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# История платежей - сумма за диапазон дат
def payment_history_summ_dates(my_login, api_access_token, start_Date, end_Date):
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + api_access_token
parameters = {'startDate': start_Date,'endDate': end_Date}
h = s.get('https://edge.qiwi.com/payment-history/v2/persons/' + my_login + '/payments/total', params = parameters)
return h.json()
-
URL /payment-history/v2/persons/wallet/payments/total?parameter=value
- wallet — номер вашего кошелька без знака «+»
-
Параметры
Данные параметры передаются в строке запроса:
Название | Тип | Описание |
---|---|---|
startDate | DateTime URL-encoded | Начальная дата периода статистики. Дату можно указать в любой временной зоне TZD (формат ГГГГ-ММ-ДД'T'чч:мм:ссTZD ), однако она должна совпадать с временной зоной в параметре endDate . Обозначение временной зоны TZD : +чч:мм или —чч:мм (временной сдвиг от GMT). Обязательный параметр |
endDate | DateTime URL-encoded | Конечная дата периода статистики. Дату можно указать в любой временной зоне TZD (формат ГГГГ-ММ-ДД'T'чч:мм:ссTZD ), однако она должна совпадать с временной зоной в параметре startDate . Обозначение временной зоны TZD : +чч:мм или —чч:мм (временной сдвиг от GMT). Обязательный параметр |
operation | String | Тип операций, учитываемых при подсчете статистики. Допустимые значения:ALL — все операции, IN — только пополнения, OUT — только платежи, QIWI_CARD — только платежи по картам QIWI (QVC, QVP). По умолчанию ALL . |
sources | Array[String] | Источники платежа, по которым вернутся данные. Каждый источник нумеруется, начиная с нуля (sources[0] , sources[1] и т.д.). Допустимые значения: QW_RUB — рублевый счет кошелька, QW_USD — счет кошелька в долларах, QW_EUR — счет кошелька в евро, CARD — привязанные и непривязанные к кошельку банковские карты, MK — счет мобильного оператора. Если не указан, учитываются все источники платежа. |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"incomingTotal":[
{
"amount":3500,
"currency":643
}],
"outgoingTotal":[
{
"amount":3497.5,
"currency":643
}]
}
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# История платежей - сумма за диапазон
# не более 90 дней с 12 апреля по 11 июля 2019 года
print(payment_history_summ_dates(mylogin, api_access_token, '2019-04-12T00:00:00Z','2019-07-11T23:59:59Z'))
{'incomingTotal': [{'amount': 3.33, 'currency': 840},
{'amount': 3481, 'currency': 643}],
'outgoingTotal': [{'amount': 3989.98, 'currency': 643},
{'amount': 3.33, 'currency': 840}]}
Успешный JSON-ответ содержит статистику платежей за выбранный период:
Поле ответа | Тип | Описание |
---|---|---|
incomingTotal | Array[Object] | Массив данных о суммах входящих платежей (пополнениях) по каждой валюте |
incomingTotal[].amount | Number(Decimal) | Сумма пополнений за период |
incomingTotal[].currency | Number(3) | Код валюты пополнений (ISO-4217) |
outgoingTotal | Array[Object] | Массив данных о суммах исходящих платежей по каждой валюте |
outgoingTotal[].amount | Number(Decimal) | Сумма платежей за период |
outgoingTotal[].currency | Number(3) | Код валюты платежей (ISO-4217) |
Информация о транзакции
Запрос используется для получения информации по определенной транзакции из вашей истории платежей.
Потестировать
Запрос → GET
curl "https://edge.qiwi.com/payment-history/v2/transactions/9112223344"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /payment-history/v2/transactions/9112223344 HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# История платежей - информация по транзакции
def payment_history_transaction(api_access_token, transaction_id, transaction_type):
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + api_access_token
parameters = {'type': transaction_type} # transaction_type 'IN' 'OUT'
h = s.get('https://edge.qiwi.com/payment-history/v1/transactions/'+transaction_id, params = parameters)
return h.json()
-
URL /payment-history/v2/transactions/transactionId?type=value
- transactionId — номер транзакции из истории платежей (параметр data[].txnId в ответе)
- type — тип транзакции из истории платежей (параметр data[].type в ответе). Параметр является необязательным
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"txnId": 11233344692,
"personId": 79161122331,
"date": "2017-08-30T14:38:09+03:00",
"errorCode": 0,
"error": null,
"status": "WAITING",
"type": "OUT",
"statusText": "Запрос обрабатывается",
"trmTxnId": "11233344691",
"account": "15040930424823121081",
"sum": {
"amount": 1,
"currency": 643
},
"commission": {
"amount": 0,
"currency": 643
},
"total": {
"amount": 1,
"currency": 643
},
"provider": {
"id": 1,
"shortName": "MTS",
"longName": "MTS",
"logoUrl": null,
"description": null,
"keys": null,
"siteUrl": null,
"extras": []
},
"source": {
"id": 7,
"shortName": "QIWI Wallet",
"longName": "QIWI Wallet",
"logoUrl": null,
"description": null,
"keys": "мобильный кошелек, кошелек, перевести деньги, личный кабинет, отправить деньги, перевод между пользователями",
"siteUrl": null,
"extras": []
},
"comment": "",
"currencyRate": 1,
"extras": [],
"chequeReady": false,
"bankDocumentAvailable": false,
"bankDocumentReady": false,
"repeatPaymentEnabled": false,
"favoritePaymentEnabled": false,
"regularPaymentEnabled": false
}
# номер кошелька в формате 79992223344
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# История платежей - информация по транзакции
transactionInfo = payment_history_transaction(api_access_token, '11181101215', 'OUT')
# История платежей - информация по транзакции из истории платежей
lastPayments = payment_history_last(mylogin, api_access_token, '20','','')
last_txn_id = lastPayments['data'][5]['txnId']
last_txn_type = lastPayments['data'][5]['type']
transactionInfo = payment_history_transaction(api_access_token, str(last_txn_id), last_txn_type)
Успешный JSON-ответ содержит объект Transaction с данными о транзакции.
Квитанция платежа
Запрос используется для получения электронной квитанции (чека) по определенной транзакции из вашей истории платежей в формате PDF/JPEG в виде файла или почтовым сообщением на указанный e-mail.
Файл квитанции
Потестировать
Запрос → GET
curl "https://edge.qiwi.com/payment-history/v1/transactions/9112223344/cheque/file?type=IN&format=PDF"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /payment-history/v1/transactions/9112223344/cheque/file?type=IN&format=PDF HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# История платежей - получение текста чека в файле
def payment_history_cheque_file(transaction_id, transaction_type, filename, api_access_token):
s = requests.Session()
s.headers['Accept'] ='application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
parameters = {'type': transaction_type,'format': 'PDF'}
h = s.get('https://edge.qiwi.com/payment-history/v1/transactions/'+transaction_id+'/cheque/file', params=parameters)
h.status_code
with open(filename + '.pdf', 'wb') as f:
f.write(h.content)
-
URL /payment-history/v1/transactions/transactionId/cheque/file?type=value&format=value
- transactionId — номер транзакции из истории платежей (параметр data[].txnId в ответе)
- type — тип транзакции из истории платежей (параметр data[].type в ответе)
- format — тип файла, в который сохраняется квитанция. Допустимые значения: JPEG, PDF
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
[
""
]
Успешный JSON-ответ содержит файл выбранного формата в бинарном виде.
Отправка квитанции
Потестировать
Запрос → POST
curl -X POST
"https://edge.qiwi.com/payment-history/v1/transactions/9112223344/cheque/send?type=IN"
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{"email": "my@example.com"}'
POST /payment-history/v1/transactions/9112223344/cheque/send?type=IN HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Content-type: application/json
Host: edge.qiwi.com
{"email": "my@example.com"}
import requests
# История платежей - отправить чек на email
def payment_history_cheque_send(transaction_id, transaction_type, email, api_access_token):
s = requests.Session()
s.headers['content-type'] ='application/json'
s.headers['Accept'] ='application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
postjson = {'email':email}
h = s.post('https://edge.qiwi.com/payment-history/v1/transactions/' + transaction_id + '/cheque/send?type=' + transaction_type, json = postjson)
h.status_code
-
URL /payment-history/v1/transactions/transactionId/cheque/send?type=value
- transactionId — номер транзакции из истории платежей (параметр data[].txnId в ответе)
- type — тип транзакции из истории платежей (параметр data[].type в ответе)
-
Параметр
Параметр передается в JSON-теле запроса:
Название | Тип | Описание |
---|---|---|
String | Адрес для отправки электронной квитанции |
Ответ ←
HTTP/1.1 201 Created
# номер кошелька в формате 79992223344
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
lastPayments = payment_history_last(mylogin, api_access_token, '20','','')
last_txn_id = lastPayments['data'][5]['txnId']
last_txn_type = lastPayments['data'][5]['type']
# История платежей - отправить чек на email
payment_history_cheque_send(str(last_txn_id), last_txn_type, 'mmd@yandex.ru', api_access_token)
Успешный JSON-ответ содержит HTTP-код результата операции отправки файла.
Модели данных API
Класс Transaction
{
"txnId": 11233344692,
"personId": 79161122331,
"date": "2017-08-30T14:38:09+03:00",
"errorCode": 0,
"error": null,
"status": "WAITING",
"type": "OUT",
"statusText": "Запрос обрабатывается",
"trmTxnId": "11233344691",
"account": "15040930424823121081",
"sum": {
"amount": 1,
"currency": 643
},
"commission": {
"amount": 0,
"currency": 643
},
"total": {
"amount": 1,
"currency": 643
},
"provider": {
"id": 1,
"shortName": "MTS",
"longName": "MTS",
"logoUrl": "",
"description": "",
"keys": "",
"siteUrl": "",
"extras": []
},
"source": {
"id": 7,
"shortName": "QIWI Wallet",
"longName": "QIWI Wallet",
"logoUrl": "",
"description": "",
"keys": "мобильный кошелек, кошелек, перевести деньги, личный кабинет, отправить деньги, перевод между пользователями",
"siteUrl": "",
"extras": []
},
"comment": "",
"currencyRate": 1,
"extras": [],
"chequeReady": false,
"bankDocumentAvailable": false,
"bankDocumentReady": false,
"repeatPaymentEnabled": false,
"favoritePaymentEnabled": false,
"regularPaymentEnabled": false
}
Объект, описывающий существующую транзакцию в сервисе QIWI Кошелек.
Элемент | Тип | Описание |
---|---|---|
txnId | Integer | ID транзакции в сервисе QIWI Кошелек |
personId | Integer | Номер кошелька |
date | DateTime | Для запросов истории платежей — Дата/время платежа, во временной зоне запроса (см. параметр startDate ). Формат даты ГГГГ-ММ-ДД'T'чч:мм:сс+03:00 Для запросов данных о транзакции — Дата/время платежа, время московское (в формате ГГГГ-ММ-ДД'T'чч:мм:сс+03:00 ) |
errorCode | Number(Integer) | Код ошибки платежа |
error | String | Описание ошибки |
type | String | Тип платежа. Возможные значения:IN — пополнение, OUT — платеж, QIWI_CARD — платеж с карты QIWI (QVC, QVP). |
status | String | Статус платежа. Возможные значения:WAITING — платеж проводится, SUCCESS — успешный платеж, ERROR — ошибка платежа. |
statusText | String | Текстовое описание статуса платежа |
trmTxnId | String | Клиентский ID транзакции |
account | String | Для платежей — идентификатор получателя (номер счета, телефона, маскированный номер карты и т.д.). Для пополнений — идентификатор отправителя, терминала или название агента пополнения кошелька |
sum | Object | Данные о сумме платежа или пополнения. |
sum.amount | Number(Decimal) | сумма платежа |
sum.currency | Number(3) | валюта платежа (код по ISO-4217) |
commission | Object | Данные о комиссии платежа |
commission.amount | Number(Decimal) | сумма |
commission.currency | Number(3) | валюта (код по ISO-4217) |
total | Object | Данные о фактической сумме платежа или пополнения. |
total.amount | Number(Decimal) | сумма (равна сумме платежа sum.amount и комиссии commission.amount ) |
total.currency | Number(3) | валюта (код по ISO-4217) |
provider | Object | Данные о провайдере. |
provider.id | Integer | ID провайдера в QIWI Wallet |
provider.shortName | String | краткое наименование провайдера |
provider.longName | String | развернутое наименование провайдера |
provider.logoUrl | String | ссылка на логотип провайдера |
provider.description | String | описание провайдера (HTML) |
provider.keys | String | список ключевых слов |
provider.siteUrl | String | сайт провайдера |
source | Object | Служебная информация |
comment | String | Комментарий к платежу |
currencyRate | Number(Decimal) | Курс конвертации (если применяется в транзакции) |
extras | Object | Служебная информация |
chequeReady | Boolean | Специальное поле |
bankDocumentAvailable | Boolean | Специальное поле |
repeatPaymentEnabled | Boolean | Специальное поле |
favoritePaymentEnabled | Boolean | Специальное поле |
regularPaymentEnabled | Boolean | Специальное поле |
Баланс QIWI Кошелька
Последнее обновление: 2020-07-06 | Предложить правки на GitHub
Методы данного API предназначены для управления балансами вашего QIWI кошелька.
Список балансов
Запрос выгружает текущие балансы счетов вашего QIWI Кошелька.
Потестировать
Запрос → GET
curl "https://edge.qiwi.com/funding-sources/v2/persons/<кошелек>/accounts"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /funding-sources/v2/persons/<кошелек>/accounts HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# Баланс QIWI Кошелька
def balance(login, api_access_token):
s = requests.Session()
s.headers['Accept']= 'application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
b = s.get('https://edge.qiwi.com/funding-sources/v2/persons/' + login + '/accounts')
return b.json()
-
URL /funding-sources/v2/persons/personId/accounts
- personId — номер вашего кошелька без знака «+»
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"accounts": [
{
"alias": "mc_beeline_rub",
"fsAlias": "qb_mc_beeline",
"bankAlias": "QIWI",
"title": "MC",
"type": {
"id": "MC",
"title": "Счет мобильного кошелька"
},
"hasBalance": false,
"balance": null,
"currency": 643
},
{
"alias": "qw_wallet_rub",
"fsAlias": "qb_wallet",
"bankAlias": "QIWI",
"title": "WALLET",
"type": {
"id": "WALLET",
"title": "QIWI Wallet"
},
"hasBalance": true,
"balance": {
"amount": 8.74,
"currency": 643
},
"currency": 643
}
]
}
# номер кошелька в формате 79992223344
mylogin = '79999999999'
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# все балансы
balances = balance(mylogin,api_access_token)['accounts']
# рублевый баланс
rubAlias = [x for x in balances if x['alias'] == 'qw_wallet_rub']
rubBalance = rubAlias[0]['balance']['amount']
Повторный запрос, если в ответе пришел пустой объект balance и поле «hasBalance»: true
GET /funding-sources/v2/persons/79115221133/accounts?timeout=1000&alias=qw_wallet_rub HTTP/1.1
Accept: application/json
Authorization: Bearer YUu2qw048gtdsvlk3iu
Host: edge.qiwi.com
Успешный ответ содержит JSON-массив счетов вашего QIWI Кошелька для фондирования платежей и текущие балансы счетов:
Поле ответа | Тип | Описание |
---|---|---|
accounts | Array[Object] | Массив балансов |
accounts[].alias | String | Псевдоним пользовательского баланса |
accounts[].fsAlias | String | Псевдоним банковского баланса |
accounts[].bankAlias | String | Псевдоним банка |
accounts[].title | String | Название соответствующего счета кошелька |
accounts[].hasBalance | Boolean | Логический признак реального баланса в системе QIWI Кошелек (не привязанная карта, не счет мобильного телефона и т.д.) |
accounts[].currency | Number(3) | Код валюты баланса (ISO-4217). Возвращаются балансы в следующих валютах: 643 — российский рубль, 840 — американский доллар, 978 — евро |
accounts[].type | Object | Сведения о счете |
type.id, type.title | String | Описание счета |
accounts[].balance | Object | Сведения о балансе данного счета. Если объект пустой и при этом поле accounts[].hasBalance равно true , повторите запрос с дополнительными параметрами:timeout=1000 и alias=accounts[].alias (псевдоним этого баланса) |
balance.amount | Number | Текущий баланс данного счета |
balance.currency | Number(3) | Код валюты баланса (ISO-4217) |
Создание баланса
Запрос создает новый счет и баланс в вашем QIWI Кошельке. Список доступных для создания счетов можно получить другим запросом.
Потестировать
Запрос → POST
curl -X POST
"https://edge.qiwi.com/funding-sources/v2/persons/<кошелек>/accounts"
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{ "alias": "qw_wallet_eur"}'
POST /funding-sources/v2/persons/<кошелек>/accounts HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Content-type: application/json
Host: edge.qiwi.com
{ "alias": "qw_wallet_eur" }
-
URL /funding-sources/v2/persons/personId/accounts
- personId — номер вашего кошелька без знака «+»
-
Параметры
Параметр передается в JSON-теле запроса:
Название | Тип | Описание |
---|---|---|
alias | String | Псевдоним нового счета (см. запрос доступных счетов) |
Ответ ←
HTTP/1.1 201 Created
Успешный ответ содержит HTTP-код 201
.
Запрос доступных счетов
Запрос отображает псевдонимы счетов, доступных для создания в вашем QIWI Кошельке.
Потестировать
Запрос → GET
curl -X GET
"https://edge.qiwi.com/funding-sources/v2/persons/<кошелек>/accounts/offer"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /funding-sources/v2/persons/<кошелек>/accounts/offer HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
-
URL /funding-sources/v2/persons/personId/accounts/offer
- personId — номер вашего кошелька без знака «+»
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{ { "alias": "qw_wallet_eur", "currency": 978 }, {} }
Успешный JSON-ответ содержит данные о счетах, которые можно создать:
Поле ответа | Тип | Описание |
---|---|---|
{} | Object | Коллекция описаний счетов |
Object.alias | String | Псевдоним счета |
Object.currency | Number(3) | Код валюты счета (ISO-4217) |
Установка баланса по умолчанию
Запрос устанавливает для вашего QIWI Кошелька счет, баланс которого будет использоваться для фондирования всех платежей по умолчанию. Счет должен содержаться в списке счетов
Потестировать
Запрос → PATCH
curl -X PATCH
"https://edge.qiwi.com/funding-sources/v2/persons/<кошелек>/accounts/qw_wallet_usd"
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{ "defaultAccount": true }'
PATCH /funding-sources/v2/persons/<кошелек>/accounts/qw_wallet_usd HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Content-type: application/json
Host: edge.qiwi.com
{ "defaultAccount": true }
-
URL /funding-sources/v2/persons/personId/accounts/accountAlias
- personId — номер вашего кошелька без знака «+»
- accountAlias — псевдоним счета в кошельке из списка счетов (параметр accounts[].alias в ответе)
-
Параметры
Параметр передается в JSON-теле запроса:
Название | Тип | Описание |
---|---|---|
defaultAccount | Boolean | Признак установки счета по умолчанию |
Ответ ←
HTTP/1.1 204 Modified
Успешный ответ содержит HTTP-код 204
.
API QIWI Мастер
Последнее обновление: 2021-10-28 | Предложить правки на GitHub
API дает доступ к управлению пакетом услуг QIWI Мастер. Пакет услуг позволяет выпускать до пяти бесплатных виртуальных карт QIWI и перевыпускать карты неограниченное число раз. Выпуск карт сверх указанного количества оплачивается по тарифу.
Доступны два типа карт:
- QIWI Мастер Prepaid – для оплаты рекламы в сервисах Яндекс.Директ и myTarget;
- QIWI Мастер Debit – новый дебетовый БИН.
Для вызова методов API вам потребуется токен API QIWI Wallet с разрешениями на следующие действия:
- Управление виртуальными картами,
- Запрос информации о профиле кошелька,
- Просмотр истории платежей,
- Проведение платежей без SMS.
Отметьте указанные разрешения при выпуске токена API QIWI Wallet.
См. также Пошаговое руководство по интеграции API QIWI Мастер.
С помощью методов API вы можете:
- Выпустить карту QIWI Мастер.
- Получить список ваших карт QIWI Мастер.
- Получить выписку транзакций по карте.
- Заблокировать и разблокировать карту.
- Получить реквизиты карты.
- Переименовать карту.
Чтобы начать работу с API, необходимо приобрести пакет QIWI Мастер.
Покупка пакета QIWI Мастер
Запрос → POST
curl -X POST
'https://edge.qiwi.com/sinap/api/v2/terms/28004/payments'
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"1600884280003",
"sum": {
"amount":2999,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"comment":"Оплата",
"fields": {
"account":"79121112233",
"vas_alias":"qvc-master"
}
}'
POST /sinap/api/v2/terms/28004/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"1600884280003",
"sum": {
"amount":2999,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"comment":"Оплата",
"fields": {
"account":"79121112233",
"vas_alias":"qvc-master"
}
}
import requests
import time
# Перевод на QIWI Кошелек
def buy_qiwi_master(api_access_token, qw):
s = requests.Session()
s.headers = {'content-type': 'application/json'}
s.headers['authorization'] = 'Bearer ' + api_access_token
s.headers['User-Agent'] = 'Android v3.2.0 MKT'
s.headers['Accept'] = 'application/json'
postjson = {"id":"","sum":{"amount":"","currency":""},"paymentMethod":{"type":"Account","accountId":"643"}, "fields":{"account":"", "vas_alias":"qvc-master"}}
postjson['id'] = str(int(time.time() * 1000))
postjson['sum']['amount'] = 2999
postjson['sum']['currency'] = '643'
postjson['fields']['account'] = qw
res = s.post('https://edge.qiwi.com/sinap/api/v2/terms/28004/payments',json = postjson)
return res.json()
-
URL /sinap/api/v2/terms/28004/payments
-
Параметры
В теле запроса передается JSON-объект Payment. Набор обязательных реквизитов платежа в поле fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер кошелька для покупки пакета QIWI Мастер |
fields.vas_alias | String | Только qvc-master |
Ответ ←
print(buy_qiwi_master(mylogin,api_access_token,'+79261112233','comment',99.01))
>> Response
{'fields': {'account': '79261112233'},
'id': '1514296828893',
'source': 'account_643',
'sum': {'amount': 2999.00, 'currency': '643'},
'terms': '28004',
'transaction': {'id': '11982501857', 'state': {'code': 'Accepted'}}}
Успешный JSON-ответ содержит объект PaymentInfo с данными о принятом платеже.
Выпуск виртуальной карты QIWI Мастер
Для выпуска виртуальной карты к пакету QIWI Мастер вам необходимо последовательно выполнить следующие запросы.
Шаг 1. Создание заказа
POST /cards/v2/persons/78000008024/orders HTTP/1.1
Accept: application/json
Authorization: Bearer f80f0875d8e45af7bdd244c7df3f1a3f
Content-Type: application/json
Host: edge.qiwi.com
{
"cardAlias": "qvc-cpa"
}
Ответ
{
"id": "<номер заказа>",
"cardAlias": "qvc-cpa",
"status": "DRAFT",
"price": null,
"cardId": null
}
Отправьте POST-запрос на адрес:
/cards/v2/persons/<номер кошелька>/orders
В ссылке запроса укажите номер кошелька с пакетом QIWI Мастер. В теле запроса укажите JSON с обязательным параметром:
Название | Тип | Описание |
---|---|---|
cardAlias | String | Тип карты |
Успешный ответ содержит JSON с номером заказа:
Поле ответа | Тип | Описание |
---|---|---|
id | String | Номер заказа |
cardAlias | String | Тип карты |
status | String | Статус заказа |
price | Object | Не заполняется |
cardId | String | Не заполняется |
Доступные для заказа типы карт
Название карты | Описание | cardAlias |
---|---|---|
QIWI Мастер Prepaid | Для оплаты рекламы в сервисах Яндекс.Директ и myTarget | «qvc-cpa» |
QIWI Мастер Debit | Новый дебетовый БИН | «qvc-cpa-debit» |
Шаг 2. Подтверждение заказа
PUT /cards/v2/persons/78000008024/orders/920fa383-6209-4743-a5d1-883f473f7f95/submit HTTP/1.1
Accept: application/json
Authorization: Bearer f80f0875d8e45af7bdd244c7df3f1a3f
Content-Type: application/json
Host: edge.qiwi.com
Ответ, если карта бесплатная
{
"id": "<номер заказа>",
"cardAlias": "qvc-cpa",
"status": "COMPLETED",
"price": {
"amount": 0,
"currency": 643
},
"cardId": "<ID карты>"
}
Ответ, если карта платная
{
"id": "<номер заказа>",
"cardAlias": "qvc-cpa",
"status": "PAYMENT_REQUIRED",
"price": {
"amount": <стоимость>,
"currency": 643
},
"cardId": null
}
Отправьте PUT-запрос на адрес:
/cards/v2/persons/<номер кошелька>/orders/<номер заказа из ответа в Шаге 1>/submit
В ссылке запроса укажите номер кошелька с пакетом QIWI Мастер и номер заказа из ответа предыдущего шага (поле id
). В теле запроса ничего не указывайте.
Успешный ответ содержит JSON со статусом заказа:
Поле ответа | Тип | Описание |
---|---|---|
id | String | Номер заказа |
cardAlias | String | Тип карты |
status | String | Статус заказа. Если карта бесплатная, то COMPLETED . Если карта платная (выпускается сверх лимита в 5 карт), то PAYMENT_REQUIRED . |
price | Object | Сведения о платеже |
amount | Number(Decimal) | Сумма покупки |
currency | Number(3) | Валюта платежа (ISO-4217) |
cardId | String | Номер выпущенной карты. Не заполняется, если карта платная. |
Шаг 3. Покупка карты
POST /sinap/api/v2/terms/32064/payments HTTP/1.1
Accept: application/json
Authorization: Bearer 68944212761e25f6fce457661cabba6c
Content-Type: application/json
Host: edge.qiwi.com
{
"id": "1600884290004",
"sum": {
"amount": 99,
"currency": "643"
},
"paymentMethod": {
"type": "Account",
"accountId": "643"
},
"fields": {
"account": "78000008024",
"order_id":"920fa383-6209-4743-a5d1-883f473f7f95"
}
}
Отправьте POST-запрос на адрес:
/sinap/api/v2/terms/32064/payments
В теле запроса передается JSON-объект Payment. Набор обязательных реквизитов платежа в объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер кошелька |
fields.order_id | String | Номер заказа из ответа на запрос |
Успешный JSON-ответ содержит объект PaymentInfo с данными о принятом платеже.
Информацию о выпущенной карте вы можете запросить со списком карт QIWI Мастер в вашем кошельке. Карту можно найти по дате активации (поле activated
) или по сравнению со списком ранее выпущенных карт.
Список карт QIWI Мастер
GET /cards/v1/cards?vas-alias=qvc-master HTTP/1.1
Accept: application/json
Authorization: Bearer b15ba2d82db883697e8a35877e60e680
Host: edge.qiwi.com
Чтобы получить список всех ваших карт QIWI Мастер, отправьте GET-запрос на адрес:
/cards/v1/cards/?vas-alias=qvc-master
Ответ
[
{
"qvx": {
"id": 133789472,
"maskedPan": "****9078",
"status": "ACTIVE",
"cardExpire": "2022-01-31T00:00:00+03:00",
"cardType": "VIRTUAL",
"cardAlias": "Yandex",
"cardLimit": null,
"activated": "2020-01-29T11:10:59+03:00",
"smsResended": "2020-01-29T11:35:01+03:00",
"postNumber": null,
"blockedDate": null,
"fullPan": null,
"cardId": 2001291110576200000,
"txnId": "2001291110576200000",
"cardExpireMonth": "01",
"cardExpireYear": "2022"
},
"balance": null,
"info": {
"id": 12,
"name": "Виртуальная карта QIWI",
"alias": "qvc-cpa",
"price": {
"amount": 99.0000,
"currency": 643
},
"period": "за год",
"type": "QVC_CPA",
"details": {
"info": "99 ₽, действует 1 год",
"description": "",
"tariffLink": "https://static.qiwi.com/qcms/files/1582791401478_5_JJ5vJe1L0szXzKb.pdf",
"offerLink": "https://static.qiwi.com/ru/doc/qvc.pdf",
"features": [
"Покупки без комиссии"
],
"requisites": [
{
"name": "Получатель",
"value": "КИВИ Банк (АО)"
},
{
"name": "ИНН",
"value": "3123011520"
},
{
"name": "Банк получателя",
"value": "КИВИ Банк (АО)"
},
{
"name": "БИК",
"value": "044525416"
},
{
"name": "КПП",
"value": "772601001"
},
{
"name": "Счет",
"value": "47416810600000000004"
},
{
"name": "Корр. счет",
"value": "30101810645250000416 (открыт в ГУ Банка России по Центральному федеральному округу)"
},
{
"name": "Назначение платежа",
"value": "Пополнение QIWI КошелькаnN +79258150000"
}
]
},
"features": []
}
}
]
Успешный ответ содержит JSON-массив с информацией о выпущенных картах:
Поле ответа | Тип | Описание |
---|---|---|
qvx | Object | Общая информация о карте |
id | Number | ID карты |
maskedPan | String | Маскированный номер карты (отображаются только последние 4 цифры) |
status | String | Текущий статус карты. Возможные значения: ACTIVE , SENDED_TO_BANK , SENDED_TO_USER , BLOCKED , UNKNOWN |
cardExpire | String | Срок действия карты |
cardType | String | Вид карты: всегда VIRTUAL (виртуальная карта) |
cardAlias | String | Название карты в интерфейсе сайта qiwi.com |
cardLimit | Object | Лимиты на карту |
value | Number | Значение лимита |
currencyCode | Number(3) | Код валюты (ISO-4217) |
activated | String | Дата активации карты |
smsResended | String | Дата высылки СМС с реквизитами |
blockedDate | String | Дата блокировки |
unblockAvailable | Boolean | Признак возможности разблокировать карту |
txnId | String | ID транзакции заказа карты |
cardExpireMonth | String | Месяц окончания действия карты |
cardExpireYear | String | Год окончания действия карты |
balance | Object | Данные баланса карты |
amount | Number | Сумма баланса |
currency | Number(3) | Код валюты баланса (ISO-4217) |
info | Object | Тарифы и банковские реквизиты карты |
alias | String | Тип карты |
price | Object | Тариф карты |
amount | Number | Стоимость обслуживания |
currency | Number(3) | Код валюты баланса (ISO-4217) |
period | String | Период обслуживания (по тарифу) |
tariffLink | String | Ссылка на описание тарифа |
offerLink | String | Ссылка на договор оферты на выпуск карты |
requisites | Array | Список пар «ключ-значение» с данными банковских реквизитов для пополнения карты |
Выписка по карте
GET /payment-history/v1/persons/78000008024/cards/158618787/statement?from=2020-01-01T00%3A00%3A00%2B03%3A00&till=2020-09-23T23%3A59%3A59%2B03%3A00 HTTP/1.1
Accept: application/json
Authorization: Bearer b15ba2d82db883697e8a35877e60e680
Host: edge.qiwi.com
Запрос предназначен для выгрузки операций по определенной карте за указанный период в тарифе QIWI Мастер.
Чтобы получить список операций по карте QIWI Мастер, отправьте GET-запрос на адрес:
/payment-history/v1/persons/<номер кошелька>/cards/<ID карты>/statement?from=<дата начала выписки>&till=<дата окончания выписки>
ID карты можно получить:
- при ее выпуске — для бесплатной карты;
- из ответа на запрос списка карт — для платной карты.
Успешный ответ в формате application/pdf
(в бинарном виде) содержит PDF-файл с выпиской.
Блокировка карты
PUT /cards/v2/persons/78000006047/cards/70590106/block HTTP/1.1
Accept: application/json
Authorization: Bearer 68944212761e25f6fce457661cabba6c
Host: edge.qiwi.com
Чтобы заблокировать карту тарифа QIWI Мастер, отправьте PUT-запрос на адрес:
/cards/v2/persons/<номер кошелька>/cards/<ID карты>/block
ID карты можно получить:
- при ее выпуске — для бесплатной карты;
- из ответа на запрос списка карт — для платной карты.
Ответ ←
HTTP/1.1 202 Accepted
Content-Type: application/json
Успешный ответ содержит HTTP-код 202.
Разблокировка карты
PUT /cards/v2/persons/78000006047/cards/111887288/unblock HTTP/1.1
Accept: application/json
Authorization: Bearer 68944212761e25f6fce457661cabba6c
Host: edge.qiwi.com
Ответ
{
"status": "OK",
"nextConfirmationRequest": null,
"confirmationId": null,
"operationId": null
}
Чтобы разблокировать карту, отправьте PUT-запрос на адрес:
/cards/v2/persons/<номер кошелька>/cards/<ID карты>/unblock
ID карты можно получить:
- при ее выпуске — для бесплатной карты;
- из ответа на запрос списка карт — для платной карты.
Успешный ответ содержит JSON со статусом операции:
Поле ответа | Тип | Описание |
---|---|---|
status | String | Статус операции: OK , FAIL , CONFIRMATION_REQUIRED или CONFIRMATION_LIMIT_EXCEED |
confirmationId | String | ID подтверждения (null для API) |
operationId | String | ID операции (null для API) |
nextConfirmationRequest | String | Дата следующей возможности запросить подтверждение (null для API) |
Получение реквизитов карты
PUT /cards/v1/cards/158619365/details HTTP/1.1
Accept: application/json
Authorization: Bearer 68944212761e25f6fce457661cabba6c
Content-Type: application/json
Host: edge.qiwi.com
{
"operationId": "43555447-a026-4c17-b56d-6956a09249c9"
}
Ответ
{
"status": "OK",
"cvv": "111",
"pan": "44441111222233333",
"errorCode": "0"
}
Чтобы получить платежные реквизиты карты (PAN и CVV), отправьте PUT-запрос на адрес:
/cards/v1/cards/<ID карты>/details
ID карты можно получить:
- при ее выпуске — для бесплатной карты;
- из ответа на запрос списка карт — для платной карты.
В теле запроса укажите JSON с обязательным параметром:
Название | Тип | Описание |
---|---|---|
operationId | String | Произвольный UUID |
Успешный ответ содержит JSON с PAN и CVV карты:
Поле ответа | Тип | Описание |
---|---|---|
status | String | Статус операции: OK , FAIL , CONFIRMATION_REQUIRED или CONFIRMATION_LIMIT_EXCEED |
cvv | String | CVV карты |
pan | String | PAN карты |
errorCode | String | Код ошибки |
Переименование карты
PUT /cards/v1/cards/158619365/alias HTTP/1.1
Accept: application/json
Authorization: Bearer 68944212761e25f6fce457661cabba6c
Content-Type: application/json
Host: edge.qiwi.com
{
"alias": "new card name"
}
Ответ
{
"status": "OK",
"error": "OK",
"errorCode": "OK"
}
Чтобы изменить название карты в интерфейсе сайта qiwi.com, отправьте PUT-запрос на адрес:
/cards/v1/cards/<ID карты>/alias
ID карты можно получить:
- при ее выпуске — для бесплатной карты;
- из ответа на запрос списка карт — для платной карты.
В теле запроса укажите JSON с обязательным параметром:
Название | Тип | Описание |
---|---|---|
alias | String | Новое пользовательское имя карты |
Успешный ответ содержит JSON со статусом операции:
Поле ответа | Тип | Описание |
---|---|---|
status | String | Статус операции:OK или FAIL |
error | String | Текстовое описание ошибки |
errorCode | String | Код ошибки |
Платежное API
Последнее обновление: 2022-10-20 | Предложить правки на GitHub
API предоставляет доступ к платежам в пользу провайдеров услуг, зарегистрированных в сервисах QIWI Кошелька.
Комиссионные тарифы
Чтобы узнать комиссию за платеж до его совершения по заданному набору платежных реквизитов, используйте этот запрос. Возвращается полная комиссия QIWI Кошелька за платеж в пользу указанного провайдера с учетом всех тарифов.
Запрос → POST
curl -X POST
'https://edge.qiwi.com/sinap/providers/99/onlineCommission'
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"account":"380995238345",
"paymentMethod":{
"type":"Account",
"accountId":"643"
},
"purchaseTotals":{
"total":{
"amount":10,
"currency":"643"
}
}
}'
POST /sinap/providers/99/onlineCommission HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"account":"380995238345",
"paymentMethod":{
"type":"Account",
"accountId":"643"
},
"purchaseTotals":{
"total":{
"amount":10,
"currency":"643"
}
}
}
import requests
# Тарифные комиссии
def get_commission(api_access_token, to_account, prv_id, sum_pay):
s = requests.Session()
s.headers = {'content-type': 'application/json'}
s.headers['authorization'] = 'Bearer ' + api_access_token
postjson = {"account":"","paymentMethod":{"type":"Account","accountId":"643"}, "purchaseTotals":{"total":{"amount":"","currency":"643"}}}
postjson['account'] = to_account
postjson['purchaseTotals']['total']['amount'] = sum_pay
c_online = s.post('https://edge.qiwi.com/sinap/providers/'+prv_id+'/onlineCommission',json = postjson)
return c_online.json()['qwCommission']['amount']
-
URL /sinap/providers/{ID}/onlineCommission
ID — идентификатор провайдера. Возможные значения:
- 99 — Перевод на QIWI Кошелек.
- 1717 — Перевод по банковским реквизитам организации.
- Провайдеры банковских переводов.
Также идентификатор нужного провайдера можно установить поиском по ключевым словам.
-
Параметры
Обязательные параметры в теле запроса:
Название | Тип | Описание |
---|---|---|
account | String | Пользовательский идентификатор (номер телефона с международным префиксом, номер карты/счета получателя, и т.д., в зависимости от провайдера) |
paymentMethod | Object | Объект, определяющий обработку платежа процессингом QIWI Wallet. Содержит следующие параметры: |
paymentMethod.type | String | Метод платежа, только Account |
paymentMethod.accountId | String | Идентификатор счета, только 643 . |
purchaseTotals | Object | Объект с платежными реквизитами |
purchaseTotals.total | Object | Объект, содержащий данные о сумме платежа: |
total.amount | Number | Сумма (можно указать рубли и копейки, разделитель . ). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону. |
total.currency | String | Валюта (только 643 , рубли) |
HTTP/1.1 200 OK
Content-Type: application/json
{
"providerId": 99,
"withdrawSum": {
"amount": 1011.01,
"currency": "643"
},
"enrollmentSum": {
"amount": 1001,
"currency": "643"
},
"qwCommission": {
"amount": 10.01,
"currency": "643"
},
"fundingSourceCommission": {
"amount": 0,
"currency": "643"
},
"withdrawToEnrollmentRate": 1
}
api_access_token = '975efd8e8376xxxb95fa7cb213xxx04'
# Комиссия за перевод на QIWI кошелек
print(get_commission(api_access_token,'+380000000000','99',5000))
# Комиссия за перевод на карту
print(get_commission(api_access_token,'4890xxxxxxxx1698','22351',1000))
Ответ ←
Рассчитанная сумма комиссии возвращается в поле qwCommission.amount
JSON-ответа.
Автозаполнение платежных форм
Запрос отображает в браузере предзаполненную форму на сайте qiwi.com для совершения платежа.
Пример ссылки (нажмите для перехода на форму)
Если вы не хотите, чтобы пользователь видел номер вашего кошелька на форме, используйте перевод по никнейму:
Пример ссылки на перевод по никнейму (нажмите для перехода на форму)
Запрос → GET
GET /payment/form/99?extra%5B%27account%27%5D=79991112233&amountInteger=1&amountFraction=0&extra%5B%27comment%27%5D=test123¤cy=643 HTTP/1.1
Host: qiwi.com
-
URL https://qiwi.com/{ID}?{parameter}={value}
ID — идентификатор провайдера, у которого набор реквизитов платежа ограничен только полем fields.account
. Возможные значения:
- 99 — Перевод на QIWI Кошелек.
- 99999 — Перевод на QIWI Кошелек по никнейму.
- 1963 — Перевод на карту Visa (карты российских банков).
- 21013 — Перевод на карту MasterCard (карты российских банков).
- 31652 — Перевод на карту МИР.
- 22351 — Перевод на Виртуальную карту QIWI.
- 1717 — Перевод по банковским реквизитам организации.
Также идентификатор нужного провайдера можно установить поиском по ключевым словам.
-
Параметры
В строке URL запроса указываются параметры отображения платежной формы:
Название | Тип | Описание | Поле на форме |
---|---|---|---|
amountInteger | Integer | Целая часть суммы платежа (рубли). Если параметр не указан, поле «Сумма» на форме будет пустым. Допустимо число не больше 99 999 (ограничение на сумму платежа) | Сумма |
amountFraction | Integer | Дробная часть суммы платежа (копейки). Если параметр не указан, поле «Сумма» на форме будет пустым. | Сумма |
currency | Константа, 643 |
Код валюты платежа. Обязательный параметр, если вы передаете в ссылке сумму платежа | — |
extra[‘comment’] | URL-encoded string | Комментарий. Параметр используется только для ID=99 | Комментарий к переводу |
extra[‘account’] | URL-encoded string | Формат совпадает с форматом параметра fields.account при оплате соответствующих провайдеров: для провайдера 99 — номер кошелька получателя; для провайдеров сотовой связи — номер мобильного телефона для пополнения (без префикса 8); для провайдеров перевода на карту — номер банковской карты получателя (без пробелов), для других провайдеров — идентификатор пользователя. Для провайдера 99999 указывается никнейм или номер кошелька получателя (задайте соответствующее значение параметра extra['accountType'] ). |
Номер Кошелька, номер телефона/счета/карты/пользовательский ID получателя. |
blocked | Array[String] | Признак неактивного поля формы. Пользователь не сможет менять значение данного поля. Каждый параметр задает соответствующее поле формы и нумеруется начиная с нуля (blocked[0] , blocked[1] и т.д.). Если не указан, пользователь сможет изменить все поля формы. Допустимые значения:sum — поле «сумма платежа», account — поле «номер счета/телефона/карты»,comment — поле «комментарий».Пример (неактивное поле суммы платежа): blocked[0]=sum |
— |
extra[‘accountType’] | URL-encoded string | Параметр используется только для ID=99999. Значение определяет перевод на QIWI кошелек по никнейму или по номеру кошелька.phone — для перевода по номеруnickname — для перевода по никнейму. Если вы не хотите, чтобы пользователь видел номер вашего кошелька на форме, используйте это значение. |
— |
Как узнать свой никнейм через API
Запрос → GET
curl -X GET
"https://edge.qiwi.com/qw-nicknames/v1/persons/79111234567/nickname"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /qw-nicknames/v1/persons/79111234567/nickname HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
-
URL /qw-nicknames/v1/persons/{wallet}/nickname
wallet — номер вашего кошелька без знака +
.
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"canChange": true,
"canUse": true,
"description": "",
"nickname": "NICKNAME"
}
Успешный ответ в формате JSON содержит никнейм вашего кошелька в поле nickname
.
Перевод на QIWI Кошелек
Запрос → POST
curl -X POST
'https://edge.qiwi.com/sinap/api/v2/terms/99/payments'
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"11111111111111",
"sum": {
"amount":100,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"comment":"Комментарий",
"fields": {
"account":"+79121112233"
}
}'
POST /sinap/api/v2/terms/99/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"11111111111111",
"sum": {
"amount":100.50,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"comment":"Комментарий",
"fields": {
"account":"+79121112233"
}
}
import requests
import time
# Перевод на QIWI Кошелек
def send_p2p(api_access_token, to_qw, comment, sum_p2p):
s = requests.Session()
s.headers = {'content-type': 'application/json'}
s.headers['authorization'] = 'Bearer ' + api_access_token
s.headers['User-Agent'] = 'Android v3.2.0 MKT'
s.headers['Accept'] = 'application/json'
postjson = {"id":"","sum":{"amount":"","currency":""},"paymentMethod":{"type":"Account","accountId":"643"}, "comment":"'+comment+'","fields":{"account":""}}
postjson['id'] = str(int(time.time() * 1000))
postjson['sum']['amount'] = sum_p2p
postjson['sum']['currency'] = '643'
postjson['fields']['account'] = to_qw
res = s.post('https://edge.qiwi.com/sinap/api/v2/terms/99/payments',json = postjson)
return res.json()
-
URL /sinap/api/v2/terms/99/payments
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Обязательный параметр. Номер кошелька для перевода |
Ответ ←
print(send_p2p(mylogin,api_access_token,'+79261112233','comment',99.01))
{'comment': 'comment',
'fields': {'account': '+79261112233'},
'id': '1514296828893',
'source': 'account_643',
'sum': {'amount': 99.01, 'currency': '643'},
'terms': '99',
'transaction': {'id': '11982501857', 'state': {'code': 'Accepted'}}}
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Конвертация
Запрос выполняет перевод средств на валютный счет QIWI Кошелька с конвертацией с вашего рублевого счета. При этом формируются две транзакции: конвертации между счетами вашего кошелька и перевода на другой кошелек. Курс валют для конвертации можно узнать другим запросом.
Запрос → POST
curl -X POST
'https://edge.qiwi.com/sinap/api/v2/terms/1099/payments'
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"11111111111111",
"sum": {
"amount":100,
"currency":"398"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"comment":"Комментарий",
"fields": {
"account":"+79121112233"
}
}'
POST /sinap/api/v2/terms/1099/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"11111111111111",
"sum": {
"amount":10.00,
"currency":"398"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"comment":"Комментарий",
"fields": {
"account":"+79121112233"
}
}
import requests
import time
# Конвертация в QIWI Кошельке (currency - код валюты String)
def exchange(api_access_token, sum_exchange, currency, to_qw):
s = requests.Session()
currencies = ['398', '840', '978']
if currency not in currencies:
print('This currency not available')
return
s.headers = {'content-type': 'application/json'}
s.headers['authorization'] = 'Bearer ' + api_access_token
s.headers['User-Agent'] = 'Android v3.2.0 MKT'
s.headers['Accept'] = 'application/json'
postjson = {"id":"","sum":{"amount":"","currency":""},"paymentMethod":{"type":"Account","accountId":"643"}, "comment":"'+comment+'","fields":{"account":""}}
postjson['id'] = str(int(time.time() * 1000))
postjson['sum']['amount'] = sum_exchange
postjson['sum']['currency'] = currency
postjson['fields']['account'] = to_qw
res = s.post('https://edge.qiwi.com/sinap/api/v2/terms/1099/payments',json = postjson)
return res.json()
-
URL /sinap/api/v2/terms/1099/payments
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Обязательный параметр. Номер кошелька для перевода |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Курсы валют
Запрос возвращает текущие курсы и кросс-курсы валют КИВИ Банка.
Запрос → GET
curl "https://edge.qiwi.com/sinap/crossRates"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /sinap/crossRates HTTP/1.1
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
import requests
# Курс пары валют (коды валют в String)
def exchange(api_access_token, currency_to, currency_from):
s = requests.Session()
s.headers = {'content-type': 'application/json'}
s.headers['authorization'] = 'Bearer ' + api_access_token
s.headers['User-Agent'] = 'Android v3.2.0 MKT'
s.headers['Accept'] = 'application/json'
res = s.get('https://edge.qiwi.com/sinap/crossRates')
# все курсы
rates = res.json()['result']
# запрошенный курс
rate = [x for x in rates if x['from'] == currency_from and x['to'] == currency_to]
if (len(rate) == 0):
print('No rate for this currencies!')
return
else:
return rate[0]['rate']
-
URL /sinap/crossRates
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"result": [
{
"set": "General",
"from": "398",
"to": "643",
"rate": 6.22665
},
{
"set": "General",
"from": "398",
"to": "756",
"rate": 412.0174305
},
...,
{
"set": "General",
"from": "980",
"to": "978",
"rate": 31.4680914
}
]
}
Успешный JSON-ответ содержит список курсов валют в списке result
. Элемент списка соответствует валютной паре:
Поле ответа | Тип | Описание |
---|---|---|
from | String | Валюта покупки |
to | String | Валюта продажи |
rate | Number | Курс |
Оплата сотовой связи
Запрос → POST
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/1/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"11111111111111",
"sum": {
"amount":100,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"9161112233"
}
}'
POST /sinap/api/v2/terms/1/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"9161112233"
}
}
import requests
import time
# Оплата мобильного телефона
def send_mobile(api_access_token, prv_id, to_account, comment, sum_pay):
s = requests.Session()
s.headers['Accept'] = 'application/json'
s.headers['Content-Type'] = 'application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
postjson = {"id":"","sum": {"amount":"","currency":"643"},"paymentMethod": {"type":"Account","accountId":"643"},"comment":"","fields": {"account":""}}
postjson['id'] = str(int(time.time() * 1000))
postjson['sum']['amount'] = sum_pay
postjson['fields']['account'] = to_account
postjson['comment'] = comment
res = s.post('https://edge.qiwi.com/sinap/api/v2/terms/'+prv_id+'/payments', json = postjson)
return res.json()
-
URL /sinap/api/v2/terms/{ID}/payments
ID — идентификатор провайдера. Определяется с помощью поиска провайдера.
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер мобильного телефона для пополнения (без префикса 8 ) |
Ответ ←
send_mobile(api_access_token,'2','9670058909','123','1')
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Перевод на карту
Поиск ID для переводов на банковские карты РФ и Белоруссии
Определение ID для переводов на банковские карты РФ и Белоруссии.
Запрос → POST
POST /sinap/api/refs/bd6fb248-2bdf-49ed-bcb2-9b0a789cfde8/containers HTTP/1.1
Accept: application/vnd.qiwi.v1+json
Content-Type: application/json
Host: edge.qiwi.com
Authorization: Bearer <токен API>
{
"account":"1234 1234 1234 1234"
}
curl -X POST
"https://edge.qiwi.com/sinap/api/refs/bd6fb248-2bdf-49ed-bcb2-9b0a789cfde8/containers"
--header "Content-Type: application/json"
--header "Accept: application/vnd.qiwi.v1+json"
--header "Authorization: Bearer <токен API>"
-d '{
"account":"1234 1234 1234 1234"
}'
-
URL /sinap/api/refs/bd6fb248-2bdf-49ed-bcb2-9b0a789cfde8/containers
-
Параметры
В поле account
JSON-тела запроса передается номер карты в строковом формате. В номере после каждой четвертой цифры ставится пробел.
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"elements": [
{
"type": "field",
"name": "termsId",
"value": "36390"
}
]
}
{"elements":[{"type": "field","name": "termsId","value": "36390"}]}
В поле ответа elements[].value
возвращается ID провайдера для перевода на банковскую карту.
Перевод на карты банков РФ и зарубежных банков
Запрос выполняет денежный перевод на карты платежных систем Visa, MasterCard или МИР.
Платежи на карты Visa и MasterCard, выпущенные иностранными банками, временно остановлены по причине ограничений со стороны платежной системы.
Запрос → POST
Пример перевода на карту банка РФ
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/1963/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"21131343",
"sum":{
"amount":1000,
"currency":"643"
},
"paymentMethod":{
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"4256********1231"
}
}'
POST /sinap/api/v2/terms/1963/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"4256XXXXXXXX1231"
}
}
Пример перевода на международную карту
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/1960/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"21131343",
"sum":{
"amount":1000,
"currency":"643"
},
"paymentMethod":{
"type":"Account",
"accountId":"643"
},
"fields": {
"account": "402865XXXXXXXXXX",
"rec_address": "Ленинский проспект 131, 56",
"rec_city": "Москва",
"rec_country": "Россия",
"reg_name": "Виктор",
"reg_name_f": "Петров",
"rem_name": "Сергей",
"rem_name_f": "Иванов"
}
}'
POST /sinap/api/v2/terms/1960/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account": "402865XXXXXXXXXX",
"rec_address": "Ленинский проспект 131, 56",
"rec_city": "Москва",
"rec_country": "Россия",
"reg_name": "Виктор",
"reg_name_f": "Петров",
"rem_name": "Сергей",
"rem_name_f": "Иванов"
}
}
import requests
import time
# Перевод на карту
def send_card(api_access_token, payment_data):
# payment_data - dictionary with all payment data
s = requests.Session()
s.headers['Accept'] = 'application/json'
s.headers['Content-Type'] = 'application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
postjson = {"id":"","sum": {"amount":"","currency":"643"},"paymentMethod": {"type":"Account","accountId":"643"},"fields": {"account":""}}
postjson['id'] = str(int(time.time() * 1000))
postjson['sum']['amount'] = payment_data.get('sum')
postjson['fields']['account'] = payment_data.get('to_card')
prv_id = payment_data.get('prv_id')
if payment_data.get('prv_id') in ['1960', '21012']:
postjson['fields']['rem_name'] = payment_data.get('rem_name')
postjson['fields']['rem_name_f'] = payment_data.get('rem_name_f')
postjson['fields']['reg_name'] = payment_data.get('reg_name')
postjson['fields']['reg_name_f'] = payment_data.get('reg_name_f')
postjson['fields']['rec_city'] = payment_data.get('rec_address')
postjson['fields']['rec_address'] = payment_data.get('rec_address')
res = s.post('https://edge.qiwi.com/sinap/api/v2/terms/' + prv_id + '/payments', json = postjson)
return res.json()
-
URL /sinap/api/v2/terms/{ID}/payments
ID — идентификатор провайдера. Возможные значения:
- 1963 — Перевод на карту Visa. Для карт, выпущенных российскими банками.
- 1960 — Перевод на карту Visa. Для карт, выпущенных банками стран Албания, Андорра,Аргентина, Армения, Австралия, Австрия, Азербайджан, Беларусь, Бельгия, Бенин, Босния и Герцеговина, Бразилия, Болгария, Китай, Хорватия, Кипр, Чешская Республика, Дания, Египет, Эстония, Финляндия, Франция, Грузия, Германия, Греция, Гонконг (Китай), Венгрия, Исландия, Индия, Индонезия, Израиль, Италия, Япония, Казахстан, Кения, Корея Республика, Кувейт, Кыргызстан, Латвия, Литва, Люксембург, Макао, Китай, Македония, Мадагаскар, Малайзия, Мальдивы, Мальта, Республика Молдова, Монако, Монголия, Черногория, Намибия, Нидерланды, Новая Зеландия, Нигерия, Норвегия, Оман, Парагвай, Польша, Португалия, Катар, Румыния, Саудовская Аравия, Республика Сербия, Сингапур, Словакия, Словения, Южная Африка, Испания, Шри-Ланка, Швеция, Таджикистан, Танзания, Таиланд, Турция, Туркменистан, Объединенные Арабские Эмираты, Великобритания, Узбекистан, Вьетнам, Замбия.
- 21013 — Перевод на карту MasterCard. Для карт, выпущенных российскими банками.
- 21012 — Перевод на карту MasterCard. Для карт, выпущенных банками стран Албания, Аргентина, Армения, Австралия, Австрия, Азербайджан, Бангладеш, Барбадос, Беларусь, Бельгия, Бенин, Босния и Герцеговина, Буркина-Фасо, Бразилия, Болгария, Камбоджа, Камерун Объединенная Республика, Чили, Китай, Колумбия, Конго, Коста-Рика, Хорватия, Кипр, Чешская Республика, Демократическая Республика Конго, Дания, Доминиканская Республика, Эквадор, Сальвадор, Египет, Эстония, Финляндия, Франция, Грузия, Германия, Гана, Греция, Гватемала, Гонконг, Венгрия, Индия, Индонезия, Ирландия, Израиль, Италия, Япония, Иордания, Казахстан, Кения, Корея, Кувейт, Кыргызстан, Латвия, Ливан, Литва, Люксембург, Макао, Македония, Мадагаскар, Малайзия, Мальдивы, Мальта, Мексика, Молдова, Монако, Монголия, Черногория, Марокко, Намибия, Нигерия, Непал, Нидерланды, Новая Зеландия, Нигерия, Норвегия, Оман, Панама, Парагвай, Перу, Филиппины, Польша, Португалия, Румыния, Катар, Саудовская Аравия, Сенегал, Сербия Республика, Сингапур, Словакия, Словения, Южная Африка, Испания, Шри-Ланка, Швеция, Швейцария, Таджикистан, Танзания, Тайланд, Тунис, Турция, Туркменистан, Объединенные Арабские Эмираты, Великобритания, Узбекистан, Вьетнам, Замбия.
- 31652 — Перевод на карту МИР.
- 22351 — Перевод на Виртуальную карту QIWI.
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа в поле fields
зависит от ID провайдера.
Параметры для ID 1963, 21013, 31652, 22351
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер банковской карты получателя (без пробелов) |
Параметры для ID 1960, 21012
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер банковской карты получателя (без пробелов) |
fields.rem_name | String | Имя отправителя |
fields.rem_name_f | String | Фамилия отправителя |
fields.rec_address | String | Адрес отправителя (без почтового индекса, в произвольной форме) |
fields.rec_city | String | Город отправителя |
fields.rec_country | String | Страна отправителя |
fields.reg_name | String | Имя получателя |
fields.reg_name_f | String | Фамилия получателя |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Перевод на карты банков Казахстана
Запрос выполняет денежный перевод на карты Visa или MasterCard, выпущенные банками Казахстана.
Запрос → POST
Пример перевода на карту
curl -X POST
--location
"https://edge.qiwi.com/sinap/api/terms/27292/payments"
-H "authorization: Bearer <токен API>"
-H "accept: application/vnd.qiwi.v2+json"
-H "sec-fetch-site: same-site"
-H "sec-fetch-mode: cors"
-H "sec-fetch-dest: empty"
-H "Content-Type: application/json"
-d '{
"id": "<случайный id платежа>",
"sum": {
"amount": <сумма перевода>,
"currency": "398"
},
"paymentMethod": {
"accountId": "398",
"type": "Account"
},
"comment": "",
"fields": {
"cardNumber": "<номер карты>",
"version": "2",
"transferSum": "100",
"info": "Для продолжения оплаты, подтвердите, что являетесь держателем указанного банковского счета.",
"accept": "1",
"account": "<значение account из подготовительного запроса>",
"ev_account1": "<значение ev_account1 из подготовительного запроса>"
}
}`
POST /sinap/api/terms/27292/payments HTTP/1.1
Content-Type: application/json
Accept: application/vnd.qiwi.v2+json
Authorization: Bearer <токен API>
sec-fetch-site: same-site
sec-fetch-mode: cors
sec-fetch-dest: empty
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"398"
},
"paymentMethod": {
"type":"Account",
"accountId":"398"
},
"fields": {
"cardNumber": "<номер карты>",
"version": "2",
"transferSum": "100",
"info": "Для продолжения оплаты, подтвердите, что являетесь держателем указанного банковского счета."
"accept": "1",
"account": "<значение account из подготовительного запроса>",
"ev_account1": "<значение ev_account1 из подготовительного запроса>"
}
}
-
URL /sinap/api/terms/27292/payments
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.cardNumber | String | Номер банковской карты получателя (без пробелов) |
fields.account | String | Значение поля account из ответа на подготовительный запрос |
fields.ev_account1 | String | Значение поля ev_account1 из ответа на подготовительный запрос |
fields.transferSum | String | Всегда 100 |
fields.accept | String | Всегда 1 |
fields.info | String | Всегда Для продолжения оплаты, подтвердите, что являетесь держателем указанного банковского счета. |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Подготовительный запрос для перевода на карту
Запрос → POST
Пример подготовительного запроса
curl -X POST
"https://edge.qiwi.com/sinap/api/refs/a42ebc79-0584-4271-b8a0-15cb4ea8b340/containers"
--header "Content-Type: application/json"
--header "Accept: application/vnd.qiwi.v1+json"
--header "Authorization: Bearer <токен API>"
-H 'sec-fetch-site: same-site'
-H 'sec-fetch-mode: cors'
-H 'sec-fetch-dest: empty'
--data-raw '{"cardNumber":"<ваш номер карты>","version":"2","transferSum":"100","src":"sinap"}'
--compressed
POST /sinap/api/refs/a42ebc79-0584-4271-b8a0-15cb4ea8b340/containers HTTP/1.1
Content-Type: application/json
Accept: application/vnd.qiwi.v1+json
Authorization: Bearer YUu2qw048gtdsvlk3iu
sec-fetch-site: same-site
sec-fetch-mode: cors
sec-fetch-dest: empty
Host: edge.qiwi.com
{
"cardNumber":"<ваш номер карты>",
"version":"2",
"transferSum":"100",
"src":"sinap"
}
-
URL /sinap/api/refs/a42ebc79-0584-4271-b8a0-15cb4ea8b340/containers
-
Параметры
Название | Тип | Описание |
---|---|---|
cardNumber | String | Номер банковской карты получателя (без пробелов) |
transferSum | String | Всегда 100 |
version | String | Всегда 2 |
src | String | Всегда sinap |
Ответ ←
...
"elements":[
{
"type":"field",
"name":"account",
"value":"<маскированный PAN карты>"
},
{
"type":"field",
"name":"ev_account1",
"value":"<длинная строка>"
}
]
Успешный JSON-ответ содержит блоки "name": "account"
и "name": "ev_account1"
. Сохраните значения из поля value
для передачи в платежном запросе.
Банковский перевод
Запрос выполняет денежный перевод на карты/счета физических лиц, открытые в российских банках.
Перевод по номеру карты
Запрос выполняет денежный перевод на карты физических лиц, выпущенные российскими банками.
Запрос → POST
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/464/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account_type": "1",
"account":"4256********1231",
"exp_date": "0422"
}
}'
POST /sinap/api/v2/terms/464/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"4256********1231",
"account_type": "1",
"exp_date": "0422"
}
}
-
URL /sinap/api/v2/terms/{ID}/payments
ID — идентификатор провайдера. Возможные значения:
- 464 — Альфа-Банк
- 804 — АО «ОТП БАНК»
- 810 — АО «РОССЕЛЬХОЗБАНК»
- 815 — Русский Стандарт
- 816 — ВТБ (ПАО)
- 821 — Промсвязьбанк
- 870 — ПАО Сбербанк
- 881 — Ренессанс Кредит
- 1134 — ПАО «МОСКОВСКИЙ КРЕДИТНЫЙ БАНК»
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер банковской карты получателя (без пробелов) |
fields.exp_date | String | Срок действия карты, в формате ММГГ (например, 0218 ). Параметр указывается только в случае перевода на карту Альфа-Банка (ID 464) и Промсвязьбанка (ID 821). |
fields.account_type | String | Тип банковского идентификатора. Номер карты соответствует типу 1 . Для некоторых банков применяются собственные значения:Россельхозбанк — 5 ВТБ — 5 Промсвязьбанк — 7 Сбербанк — 5 МОСКОВСКИЙ КРЕДИТНЫЙ БАНК — 5 . |
fields.mfo | String | БИК соответствующего банка/территориального отделения банка |
fields.lname | String | Фамилия получателя |
fields.fname | String | Имя получателя |
fields.mname | String | Отчество получателя |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Перевод по номеру счета/договора
Запрос выполняет денежный перевод на счета физических лиц, открытые в российских банках. Возможен обычный перевод или перевод с использованием сервиса срочного перевода (исполнение в течение часа, с 9:00 до 19:30).
Запрос → POST
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/816/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account_type": "2",
"urgent": "0",
"lname": "Иванов",
"fname": "Иван",
"mname": "Иванович",
"mfo": "046577795",
"account":"40817***"
}
}'
POST /sinap/api/v2/terms/816/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account_type": "2",
"urgent": "0",
"lname": "Иванов",
"fname": "Иван",
"mname": "Иванович",
"mfo": "046577795",
"account":"40817***"
}
}
-
URL /sinap/api/v2/terms/{ID}/payments
ID — идентификатор провайдера. Возможные значения:
- 313 — ХоумКредит Банк
- 464 — Альфа-Банк
- 821 — Промсвязьбанк
- 804 — АО «ОТП БАНК»
- 810 — АО «РОССЕЛЬХОЗБАНК»
- 816 — ВТБ (ПАО)
- 819 — АО ЮНИКРЕДИТ БАНК
- 868 — КИВИ БАНК (АО)
- 870 — ПАО Сбербанк
- 1134 — ПАО «МОСКОВСКИЙ КРЕДИТНЫЙ БАНК»
- 27324 — АО «РАЙФФАЙЗЕНБАНК»
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Номер банковского счета получателя |
fields.urgent | String | Признак ускоренного перевода. Значение 0 — не использовать; значение 1 — выполнить перевод через Сервис срочного перевода ЦБ РФ. Внимание! Взимается дополнительная комиссия за ускоренный перевод |
fields.mfo | String | БИК соответствующего банка/территориального отделения банка |
fields.account_type | String | Тип банковского идентификатора. Номер счета (2 ) или номер договора (3 ). Для некоторых банков применяются собственные значения:Промсвязьбанк — 9 ВТБ — 5 ХоумКредит Банк — 6 . |
fields.lname | String | Фамилия получателя |
fields.fname | String | Имя получателя |
fields.mname | String | Отчество получателя |
fileds.agrnum | String | Номер договора. Только для переводов в ХоумКредит Банк |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Оплата других услуг
Оплата услуги по идентификатору пользователя. Запрос применяется для провайдеров, использующих в реквизитах единственный пользовательский идентификатор, без проверки номера аккаунта.
Запрос → POST
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/674/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
-d '{
"id":"21131343",
"sum": {
"amount":100,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"111000000"
}
}'
POST /sinap/api/v2/terms/674/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
{
"id":"21131343",
"sum": {
"amount":100,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"account":"111000"
}
}
import requests
import time
# оплата простого провайдера
def pay_simple_prv(api_access_token, prv_id, to_account, sum_pay):
s = requests.Session()
s.headers['Accept'] = 'application/json'
s.headers['Content-Type'] = 'application/json'
s.headers['authorization'] = 'Bearer ' + api_access_token
postjson = {"id":"","sum": {"amount":"","currency":"643"},"paymentMethod": {"type":"Account","accountId":"643"},"fields": {"account":""}}
postjson['id'] = str(int(time.time() * 1000))
postjson['sum']['amount'] = sum_pay
postjson['fields']['account'] = to_account
res = s.post('https://edge.qiwi.com/sinap/api/v2/terms/'+prv_id+'/payments', json = postjson)
return res.json()
-
URL /sinap/api/v2/terms/{ID}/payments
ID — идентификатор провайдера. Возможные значения:
- 674 — OnLime.
- 1239 — Фонд Подари жизнь.
- Идентификатор другого интернет-провайдера или благотворительного фонда. Воспользуйтесь поиском провайдера по ключевым словам.
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.account | String | Пользовательский идентификатор |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Платеж по свободным реквизитам
Оплата услуг коммерческих организаций по их банковским реквизитам.
Запрос → POST
curl -X POST
"https://edge.qiwi.com/sinap/api/v2/terms/1717/payments"
--header "Content-Type: application/json"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
--header "User-Agent: ***"
-d '{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"extra_to_bik":"044525201",
"requestProtocol":"qw1",
"city":"МОСКВА",
"name":"ПАО АКБ "АВАНГАРД"",
"to_bik":"044525201",
"urgent":"0",
"to_kpp":"772111001",
"is_commercial":"1",
"nds":"НДС не облагается",
"goal":" Оплата товара по заказу №090738231",
"from_name_p":"Николаевич",
"from_name":"Иван",
"from_name_f":"Михайлов",
"info":"Коммерческие организации",
"to_name":"ООО "Технический Центр ДЕЛЬТА"",
"to_inn":"7726111111",
"account":"40711100000012321",
"toServiceId":"1717"
}
}'
POST /sinap/api/v2/terms/1717/payments HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <токен API>
Host: edge.qiwi.com
User-Agent: ****
{
"id":"21131343",
"sum": {
"amount":1000,
"currency":"643"
},
"paymentMethod": {
"type":"Account",
"accountId":"643"
},
"fields": {
"extra_to_bik":"044525201",
"requestProtocol":"qw1",
"city":"МОСКВА",
"name":"ПАО АКБ "АВАНГАРД"",
"to_bik":"044525201",
"urgent":"0",
"to_kpp":"772111001",
"is_commercial":"1",
"nds":"НДС не облагается",
"goal":" Оплата товара по заказу №090738231",
"from_name_p":"Николаевич",
"from_name":"Иван",
"from_name_f":"Михайлов",
"info":"Коммерческие организации",
"to_name":"ООО "Технический Центр ДЕЛЬТА"",
"to_inn":"7726111111",
"account":"40711100000012321",
"toServiceId":"1717"
}
}
-
URL /sinap/api/v2/terms/1717/payments
-
Параметры
В теле запроса передается JSON-объект. Структура объекта описана в классе Payment. Набор реквизитов платежа передается во вложенном объекте fields
:
Название | Тип | Описание |
---|---|---|
fields.name | String | Наименование банка получателя (кавычки экранируются символом ) |
fields.extra_to_bik | String | БИК банка получателя |
fields.to_bik | String | БИК банка получателя |
fields.city | String | Город местонахождения получателя |
fields.info | String | Константа, Коммерческие организации |
fields.is_commercial | String | Служебная информация, константа 1 |
fields.to_name | String | Наименование организации (кавычки экранируются символом ) |
fields.to_inn | String | ИНН организации |
fields.to_kpp | String | КПП организации |
fields.nds | String | Признак уплаты НДС. Если вы оплачиваете квитанцию и в ней не указан НДС, то строка НДС не облагается . В ином случае, строка В т.ч. НДС . |
fields.goal | String | Назначение платежа |
fields.urgent | String | Признак срочного платежа (0 — нет, 1 — да). Срочный платеж выполняется от 10 минут. Возможен по будням с 9:00 до 20:30 по московскому времени. Стоимость услуги — 25 рублей. |
fields.account | String | Номер счета получателя |
fields.from_name | String | Имя плательщика |
fields.from_name_p | String | Отчество плательщика |
fields.from_name_f | String | Фамилия плательщика |
fields.requestProtocol | String | Служебная информация, константа qw1 |
fields.toServiceId | String | Служебная информация, константа 1717 |
Ответ ←
В успешном JSON-ответе возвращается объект со структурой класса PaymentInfo с данными о принятом платеже.
Поиск провайдера по ключевым словам
Используйте этот запрос для поиска идентификатора провайдера. В запросе указывается список ключевых слов (например, название провайдера), разделенных пробелами.
Запрос → GET
curl -X GET
"https://edge.qiwi.com/search/v1/search?query=%D0%91%D0%B8%D0%BB%D0%B0%D0%B9%D0%BD+%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B8%D0%B9+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /search/v1/search?query=%D0%91%D0%B8%D0%BB%D0%B0%D0%B9%D0%BD+%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B8%D0%B9+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82 HTTP/1.1
Accept: application/json
Host: edge.qiwi.com
Authorization: Bearer <токен API>
import requests
# поиск на qiwi.com - определение id провайдера по названию
def qiwi_com_search(api_access_token, search_phrase):
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + api_access_token
search = s.get('https://edge.qiwi.com/search/v1/search', params={'query':search_phrase})
return search.json()['items']
-
URL https://edge.qiwi.com/search/v1/search?query={value}
query — строка ключевых слов, разделенных пробелами.
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"items": [
{
"name": "МТС Домашний интернет, ТВ и Телефония РФ",
"description": "МТС Домашний интернет, ТВ и Телефония РФ",
"uri": null,
"data": {
"id": 23729,
"logoUrl": "https://static.qiwi.com/img/providers/logoBig/23729_l.png",
...
}
},
...
]
}
# Поиск провайдера: парсинг ответа
prv = qiwi_com_search('xxxxxxxxxxxxxxxxxxx','Билайн домашний интернет')[0]['data']['id']
print(str(prv))
Успешный JSON-ответ содержит идентификаторы найденных провайдеров:
Поле ответа | Тип | Описание |
---|---|---|
items | Array | Список провайдеров |
items[].data.id | Number | Идентификатор провайдера |
Поиск сотового оператора по номеру телефона
Используйте этот запрос для поиска идентификатора провайдера сотового оператора. В запросе указывается номер мобильного телефона в формате 11 цифр, начинающийся с цифры 7
. Действует только для мобильных операторов РФ и Казахстана.
Запрос → GET
curl "https://edge.qiwi.com/qw-mobile-providers-resolver/v1/providers?phoneNumber=79277010101"
--header "Accept: application/json"
--header "Authorization: Bearer <токен API>"
GET /qw-mobile-providers-resolver/v1/providers?phoneNumber=79270010101 HTTP/1.1
Accept: application/json
Host: edge.qiwi.com
Authorization: Bearer <токен API>
import requests
# поиск на qiwi.com - определение id провайдера по номеру телефона
def qiwi_com_search_mobile(api_access_token, number):
s = requests.Session()
s.headers['authorization'] = 'Bearer ' + api_access_token
search = s.get('https://edge.qiwi.com/qw-mobile-providers-resolver/v1/providers', params={'phoneNumber':number})
return search.json()['mobileOperatorProviderList']
-
URL https://edge.qiwi.com/qw-mobile-providers-resolver/v1/providers?phoneNumber={value}
value — номер мобильного телефона в формате 11 цифр, начинающийся с 7
.
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"mobileOperatorProviderList": [
{
"id": 3,
"shortName": "МегаФон Столичный филиал",
"logoUrl": "https://static.qiwi.com/img/providers/logoBig/3_l.png"
}
]
}
# Поиск провайдера: парсинг ответа
prv = qiwi_com_search_mobile('xxxxxxxxxxxxxxxxxxx','79270010101')[0]['id']
print(str(prv))
Успешный JSON-ответ содержит идентификатор найденного провайдера:
Поле ответа | Тип | Описание |
---|---|---|
mobileOperatorProviderList | Array | Информация о провайдере |
id | Number | Идентификатор провайдера |
shortName | String | Название провайдера |
Модели данных API
Класс Payment
Класс, описывающий данные для платежа на провайдера в QIWI Кошельке.
Элемент | Тип | Описание |
---|---|---|
id | String | Обязательный параметр. Клиентский ID транзакции (максимум 20 цифр). Должен быть уникальным для каждой транзакции и увеличиваться с каждой последующей транзакцией. Для выполнения этих требований рекомендуется задавать равным 1000*(Standard Unix time в секундах). |
sum | Object | Обязательный параметр. Данные о сумме платежа |
sum.amount | Number | Обязательный параметр. Сумма (можно указать рубли и копейки, разделитель . ). Положительное число, округленное до 2 знаков после десятичной точки. При большем числе знаков значение будет округлено до копеек в меньшую сторону. |
sum.currency | String | Обязательный параметр. Валюта (только 643 , рубли) |
paymentMethod | Object | Обязательный параметр. Объект, определяющий обработку платежа процессингом QIWI Wallet. |
paymentMethod.type | String | Обязательный параметр. Константа, Account |
paymentMethod.accountId | String | Обязательный параметр. Константа, 643 |
fields | Object | Обязательный параметр. Реквизиты платежа. Состав полей зависит от провайдера. |
comment | String | Комментарий к платежу. Используется только для переводов на QIWI кошелек и при конвертации |
Класс PaymentInfo
{
"id": "150217833198900",
"terms": "99",
"fields": {
"account": "79121238345"
},
"sum": {
"amount": 100,
"currency": "643"
},
"transaction": {
"id": "11155897070",
"state": {
"code": "Accepted"
}
},
"source": "account_643",
"comment": "Комментарий"
}
Пример ответа с маскированным полем
{
"id": "21131343",
"terms": "1963",
"fields": {
"account": "4256********1231"
},
"sum": {
"amount": 1000,
"currency": "643"
},
"source": "account_643",
"transaction": {
"id": "4969142201",
"state": {
"code": "Accepted"
}
}
}
Класс, описывающий данные платежной транзакции в QIWI Кошельке. Возвращается в ответе на запросы к платежному API.
Элемент | Тип | Описание |
---|---|---|
id | Number | Копия параметра id из платежного запроса |
terms | String | Идентификатор провайдера, на которого был отправлен платеж |
fields | Object | Копия объекта fields из платежного запроса. Номер карты (если был выполнен перевод на карту) возвращается в маскированном виде |
sum | Object | Копия объекта sum из платежного запроса |
source | String | Константа, account_643 |
comment | String | Копия параметра comment из платежного запроса (возвращается, если присутствует в запросе) |
transaction | Object | Объект с данными о транзакции в процессинге QIWI Wallet. |
transaction.id | String | ID транзакции в процессинге QIWI Wallet |
transaction.state | Object | Объект содержит текущее состояние транзакции в процессинге QIWI Wallet. |
state.code | String | Текущий статус транзакции, только значение Accepted (платеж принят к проведению). Финальный результат транзакции можно узнать в истории платежей. |
Счета
Счет в QIWI Wallet API — универсальная заявка на платеж или перевод с QIWI кошелька.
В API поддерживаются операции выставления, оплаты и отмены счетов, а также запрос списка неоплаченных счетов вашего QIWI кошелька.
Выставление счета на QIWI кошелек
Для выставления счета на QIWI Кошелек используется протокол API P2P-счетов. Для авторизации используется токен P2P.
Выпуск токена P2P
Вы можете получить токен P2P на p2p.qiwi.com в личном кабинете, или использовать представленный ниже запрос. Этим запросом можно также настроить адрес уведомлений об оплате счетов.
Запрос возвращает в ответе пару токенов P2P:
- поле
PublicKey
— токен для выставления счета при вызове платежной формы; - поле
SecretKey
— токен для выставления счета через API.
Запрос → POST
curl -X POST
https://edge.qiwi.com/widgets-api/api/p2p/protected/keys/create
-H 'Authorization: Bearer <токен API QIWI Кошелька>'
-H 'Content-Type: application/json'
-H 'Accept: application/json'
-H 'cache-control: no-cache'
-d '{"keysPairName":"Name","serverNotificationsUrl":"https://test.com"}'
POST /widgets-api/api/p2p/protected/keys/create HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer <токен API QIWI Кошелька>
Content-Type: application/json
Accept: application/json
User-Agent: ****
{"keysPairName":"Name", "serverNotificationsUrl":"https://test.com"}
HTTP/1.1 200 OK
Content-Type: application/json
{"PublicKey": "XXX", "SecretKey": "YYY"}
-
URL /widgets-api/api/p2p/protected/keys/create
-
Параметры
Для авторизации используется токен API QIWI Кошелька.
Параметры передаются в теле запроса как JSON:
Название | Тип | Описание |
---|---|---|
keysPairName | String | Название пары токенов P2P (произвольная строка) |
serverNotificationsUrl | String | URL для уведомлений об оплате счетов (необязательный параметр) |
Список счетов
Метод получения списка неоплаченных счетов вашего кошелька. Список строится в обратном хронологическом порядке. По умолчанию, список разбивается на страницы по 50 элементов в каждой, но вы можете задать другое количество элементов (не более 50). В запросе можно использовать фильтры по времени выставления счета, начальному идентификатору счета.
Запрос → GET
curl -X GET
--header 'Accept: application/json'
--header 'Authorization: Bearer ***'
'https://edge.qiwi.com/checkout-api/api/bill/search?statuses=READY_FOR_PAY&rows=50'
GET /checkout-api/api/bill/search?statuses=READY_FOR_PAY&rows=50 HTTP/1.1
Accept: application/json
Authorization: Bearer ***
Host: edge.qiwi.com
User-Agent: ****
-
URL /checkout-api/api/bill/search?statuses=READY_FOR_PAY¶meter=value
-
Параметры
Параметры передаются в строке URL запроса:
Название | Тип | Описание |
---|---|---|
statuses | String | Статус неоплаченного счета. Обязательный параметр. Только строка READY_FOR_PAY |
rows | Integer | Максимальное число счетов в ответе, для разбивки списка на страницы. Целое число от 1 до 50. По умолчанию возвращается не более 50 счетов. |
min_creation_datetime | Long | Нижняя временная граница для поиска счетов, Unix-time |
max_creation_datetime | Long | Верхняя временная граница для поиска счетов, Unix-time |
next_id | Number | Начальный идентификатор счета для поиска. Будет возвращен список счетов с идентификаторами, равными или меньше этого значения. Используется для продолжения списка, разбитого на страницы. |
next_creation_datetime | Long | Начальное время для поиска (возвращаются только счета, выставленные ранее этого времени), Unix-time. Используется для продолжения списка, разбитого на страницы. |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"bills": [
{
"id": 1063702405,
"external_id": "154140605",
"creation_datetime": 1523025585000,
"expiration_datetime": 1523026003808,
"sum": {
"currency": 643,
"amount": 100
},
"status": "READY_FOR_PAY",
"type": "MERCHANT",
"repetitive": false,
"provider": {
"id": 480706,
"short_name": "Интернет-магазин цветов",
"long_name": "ООО «Ромашка»",
"logo_url":"https://static.qiwi.com/img/providers/logoBig/480706_l.png"
},
"comment": "Пополнение счета 13515573",
"pay_url":"https://oplata.qiwi.com/form?shop=480706&transaction=102263702405"
}
]
}
Успешный JSON-ответ содержит список неоплаченных счетов вашего кошелька, соответствующих заданному фильтру:
Поле ответа | Тип | Описание |
---|---|---|
bills | Array[Object] | Список счетов. Длина списка равна или меньше параметру rows из запроса, или максимально 50, если параметр не указан |
bills[].id | Integer | Идентификатор счета в QIWI Кошельке |
bills[].external_id | String | Идентификатор счета у мерчанта |
bills[].creation_datetime | Long | Дата/время создания счета, Unix-time |
bills[].expiration_datetime | Long | Дата/время окончания срока действия счета, Unix-time |
bills[].sum | Object | Сведения о сумме счета |
sum.currency | Integer | Валюта суммы счета |
sum.amount | Number | Сумма счета |
bills[].status | String | Константа, READY_FOR_PAY |
bills[].type | String | Константа, MERCHANT |
bills[].repetitive | Boolean | Служебное поле |
bills[].provider | Object | Информация о мерчанте |
provider.id | Integer | Идентификатор мерчанта в QIWI |
provider.short_name | String | Сокращенное название мерчанта |
provider.long_name | String | Полное название мерчанта |
provider.logo_url | String | Ссылка на логотип мерчанта |
bills[].comment | String | Комментарий к счету |
bills[].pay_url | String | Ссылка для оплаты счета на Платежной форме QIWI |
Оплата счета
Метод выполняет безусловную оплату счета без SMS-подтверждения.
Запрос → POST
curl -X POST
--header 'Content-Type: application/json;charset=UTF-8'
--header 'Accept: application/json'
--header 'Authorization: Bearer 68ec21fd52e4244838946dd07ed225a1'
-d '{
"invoice_uid": "1063702405",
"currency": "643"
}'
'https://edge.qiwi.com/checkout-api/invoice/pay/wallet'
POST /checkout-api/invoice/pay/wallet HTTP/1.1
Accept: application/json
Content-type: application/json
Authorization: Bearer ***
Host: edge.qiwi.com
User-Agent: ****
{
"invoice_uid": "1063702405",
"currency": "643"
}
-
URL /checkout-api/invoice/pay/wallet
-
Параметры
Обязательные параметры в теле запроса:
Название | Тип | Описание |
---|---|---|
invoice_uid | String | ID счета в QIWI; берется из значения bills[].id данных о счете |
currency | String | Валюта суммы счета; берется из значения bills[].sum.currency данных о счете |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"invoice_status": "PAID_STATUS",
"is_sms_confirm": false,
"WALLET_ACCEPT_PAY_RESULT": {}
}
Успешный JSON-ответ содержит статус оплаченного счета:
Поле ответа | Тип | Описание |
---|---|---|
invoice_status | String | Строка кода статуса оплаты счета, PAID_STATUS . Любой другой статус означает неуспех платежной транзакции. |
is_sms_confirm | String | Признак подтверждения по SMS |
Отмена неоплаченного счета
Метод отклоняет неоплаченный счет, что делает его недоступным для оплаты.
Запрос → POST
curl -X POST
--header 'Accept: application/json'
--header 'Authorization: Bearer ***'
--header 'Content-Type: application/json;charset=UTF-8'
-d '{ "id": 1034353453 }'
'https://edge.qiwi.com/checkout-api/api/bill/reject'
POST /checkout-api/api/bill/reject HTTP/1.1
Accept: application/json
Authorization: Bearer ***
Content-type: application/json
Host: edge.qiwi.com
User-Agent: ****
{
"id": 1034353453
}
-
URL /checkout-api/api/bill/reject
-
Параметры
Обязательный параметр передается в теле запроса в формате JSON:
Название | Тип | Описание |
---|---|---|
id | Integer | ID счета для отмены; берется из значения bills[].id данных о счете |
Ответ ←
HTTP/1.1 200 OK
Успешный ответ содержит HTTP-код 200
.
Уведомления (вебхуки)
Последнее обновление: 2020-07-06 | Предложить правки на GitHub
Хуки или уведомления с данными о событии (платеже/пополнении) отправляются на ваш сервер. В настоящее время поддерживаются только вебхуки (webhook) — сообщения, адресованные веб-сервисам. Для приема вебхуков вам необходимо настроить свой сервер на прием и обработку POST-запросов (Формат запросов).
От вашего сервера успешный ответ 200 OK на входящий запрос должен поступить в течение 1-2 сек. Не дождавшись ответа, сервис КИВИ отправляет еще одно уведомление через 10 минут, потом еще одно через 1 час.
Пулы IP-адресов, с которых сервисы QIWI отправляют webhook:
- 79.142.16.0/20
- 195.189.100.0/22
- 91.232.230.0/23
- 91.213.51.0/24
Если ваш сервер обработки вебхуков работает за брандмауэром, необходимо добавить эти IP-адреса в список разрешенных адресов входящих TCP-пакетов.
Быстрый старт
- Реализуйте веб-сервис обработки запросов. Особое внимание обратите на реализацию проверки подписи.
- Зарегистрируйте свой обработчик. Внимание! Длина оригинального (не URL-encoded) адреса сервиса обработчика не должна превышать 100 символов.
- Запросите ключ проверки подписи.
- Протестируйте прием запросов вашим обработчиком с помощью тестового запроса. На зарегистрированный в п.2 сервис придет пустое уведомление.
Чтобы сменить адрес сервера для обработки вебхуков:
- Удалите обработчик вебхуков.
- Зарегистрируйте новый обработчик. Внимание! Длина оригинального (не URL-encoded) адреса сервиса обработчика не должна превышать 100 символов.
- Запросите ключ проверки подписи для нового обработчика.
- Протестируйте прием запросов новым обработчиком с помощью тестового запроса. На зарегистрированный в п.2 сервис придет пустое уведомление.
Обработка вебхука
Исходящие платежи — платеж в проведении
POST /some-hook.php HTTP/1.1
Accept: application/json
Content-type: application/json
Host: example.com
{"hash": "50779a03d90c4fa60ac44dfd158dbceec0e9c57fa4cf4f5298450fdde1868945",
"hookId": "f57f95e2-149f-4278-b2cb-4114bc319727",
"messageId": "f9a197a8-26b6-4d42-aac4-d86b789c373c",
"payment": {"account": "myAccount",
"comment": "Комментарий",
"commission": Null,
"date": "2018-05-18T16:05:15+03:00",
"errorCode": "0",
"personId": 79254914194,
"provider": 25549,
"signFields": "sum.currency,sum.amount,type,account,txnId",
"status": "WAITING",
"sum": {"amount": 1.73, "currency": 643},
"total": {"amount": 1.73, "currency": 643},
"txnId": "13117338074",
"type": "OUT"},
"test": false,
"version": "1.0.0"}
Исходящие платежи — успешный платеж
POST /some-hook.php HTTP/1.1
Accept: application/json
Content-type: application/json
Host: example.com
{"hash": "50779a03d90c4fa60ac44dfd158dbceec0e9c57fa4cf4f5298450fdde1868945",
"hookId": "f57f95e2-149f-4278-b2cb-4114bc319727",
"messageId": "6e2a0e32-4c8d-4fe2-9eed-fe3b6a726ff4",
"payment": {"account": "masterDre",
"comment": "Комментарий",
"commission": {"amount": 0.0, "currency": 643},
"date": "2018-05-18T16:05:15+03:00",
"errorCode": "0",
"personId": 79254914194,
"provider": 25549,
"signFields": "sum.currency,sum.amount,type,account,txnId",
"status": "SUCCESS",
"sum": {"amount": 1.73, "currency": 643},
"total": {"amount": 1.73, "currency": 643},
"txnId": "13117338074",
"type": "OUT"},
"test": false,
"version": "1.0.0"}
Исходящие платежи — неуспешный платеж
POST /some-hook.php HTTP/1.1
Accept: application/json
Content-type: application/json
Host: example.com
{"hash": "0637b07b1018d76585db26b0f8077016b12996006429e22a7dc5b6982710a1ef",
"hookId": "f57f95e2-149f-4278-b2cb-4114bc319727",
"messageId": "1133873b-9bb6-4adb-9bfe-7be3a9aa999f",
"payment": {"account": "borya241203",
"comment": "Комментарий",
"commission": None,
"date": "2018-05-20T05:19:16+03:00",
"errorCode": "5",
"personId": 79254914194,
"provider": 25549,
"signFields": "sum.currency,sum.amount,type,account,txnId",
"status": "ERROR",
"sum": {"amount": 1.01, "currency": 643},
"total": {"amount": 1.01, "currency": 643},
"txnId": "13126423989",
"type": "OUT"},
"test": false,
"version": "1.0.0"}
Входящие платежи — успешный платеж
POST /some-hook.php HTTP/1.1
Accept: application/json
Content-type: application/json
Host: example.com
{"hash": "a56ed0090fa3fd2fd0b002ed80f85a120037a6a85f840938888275e1631da96f",
"hookId": "8c79f60d-0272-476b-b120-6e7629467328",
"messageId": "bba24947-ab5f-4b33-881b-738fc3a4c9e1",
"payment": {"account": "79042426915",
"comment": "Пополнение кошелька",
"commission": {"amount": 0.0, "currency": 643},
"date": "2018-03-25T13:16:48+03:00",
"errorCode": "0",
"personId": 79645265240,
"provider": 7,
"signFields": "sum.currency,sum.amount,type,account,txnId",
"status": "SUCCESS",
"sum": {"amount": 1.09, "currency": 643},
"total": {"amount": 1.09, "currency": 643},
"txnId": "12565018935",
"type": "IN"},
"test": false,
"version": "1.0.0"}
Каждый вебхук посылает уведомления — входящие POST-запросы с JSON-объектом, содержащим данные об одном платеже. Схема объекта:
Поле | Тип | Описание |
---|---|---|
hookId | String (UUID) | Уникальный id хука |
messageId | String (UUID) | Уникальный id уведомления |
payment | Object | Данные платежа |
payment.txnId | String | ID транзакции в процессинге QIWI Wallet |
payment.account | String | Для платежей — номер счета получателя. Для пополнений — номер отправителя, терминала или название агента пополнения кошелька |
payment.signFields | String | Список полей объекта payment (через , ), которые хешируются алгоритмом HmacSHA256 для проверки уведомления (см. параметр hash ) |
payment.personId | Integer | Номер кошелька |
payment.date | String DateTime | Дата/время платежа, в московской временной зоне. Формат даты ГГГГ-ММ-ДД'T'чч:мм:сс+03:00 |
payment.errorCode | String | Код ошибки платежа |
payment.type | String | Тип платежа. Возможные значения:IN — пополнение, OUT — платеж |
payment.status | String | Статус платежа. Возможные значения:WAITING — платеж проводится,SUCCESS — успешный платеж,ERROR — ошибка платежа. |
payment.provider | Integer | ID провайдера QIWI Wallet |
payment.comment | String | Комментарий к транзакции |
payment.sum | Object | Данные о сумме платежа или пополнения. Параметры: |
sum.amount | Number(Decimal) | Сумма |
sum.currency | Number(3) | Код валюты |
payment.commission | Object | Данные о комиссии для платежа или пополнения. Параметры: |
commission.amount | Number(Decimal) | Сумма |
commission.currency | Number(3) | Код валюты |
payment.total | Object | Данные об итоговой сумме платежа или пополнения. Параметры: |
total.amount | Number(Decimal) | Сумма |
total.currency | Number(3) | Код валюты |
test | Boolean | Признак тестового сообщения |
version | String | Версия API |
hash | String | Хэш цифровой подписи уведомления |
Как проверить подпись уведомления
<?php
//Функция возвращает упорядоченную строку значений параметров webhook и хэш подписи webhook для проверки
function getReqParams(){
//Make sure that it is a POST request.
if(strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') != 0){
throw new Exception('Request method must be POST!');
}
//Receive the RAW post data.
$content = trim(file_get_contents("php://input"));
//Attempt to decode the incoming RAW post data from JSON.
$decoded = json_decode($content, true);
//If json_decode failed, the JSON is invalid.
if(!is_array($decoded)){
throw new Exception('Received content contained invalid JSON!');
}
//Check if test
if ($decoded['test'] == 'true') {
throw new Exception('Test!');
}
// Строка параметров
$reqparams = $decoded['payment']['sum']['currency'] . '|' . $decoded['payment']['sum']['amount'] . '|'. $decoded['payment']['type'] . '|' . $decoded['payment']['account'] . '|' . $decoded['payment']['txnId'];
// Подпись из запроса
foreach ($decoded as $name=>$value) {
if ($name == 'hash') {
$SIGN_REQ = $value;
}
}
return [$reqparams, $SIGN_REQ];
}
// Список параметров и подпись
$Request = getReqParams();
// Base64 encoded ключ для дешифровки вебхуков (метод /hook/{hookId}/key)
$NOTIFY_PWD = "JcyVhjHCvHQwufz+IHXolyqHgEc5MoayBfParl6Guoc=";
// Вычисляем хэш SHA-256 строки параметров и шифруем с ключом для веб-хуков
$reqres = hash_hmac("sha256", $Request[0], base64_decode($NOTIFY_PWD));
// Проверка подписи вебхука
if (hash_equals($reqres, $Request[1])) {
$error = array('response' => 'OK');
}
else $error = array('response' => 'error');
//Ответ
header('Content-Type: application/json');
$jsonres = json_encode($error);
echo $jsonres;
error_log('error code' . $jsonres);
?>
import base64
import hmac
import hashlib
import requests
# Base64 encoded ключ для расшифровки вебхука (/hook/{hookId}/key)
webhook_key_base64 = 'JcyVhjHCvHQwufz+IHXolyqHgEc5MoayBfParl6Guoc='
# строка параметров из запроса
data = '643|1|IN|+79161112233|13353941550'
# хэш подписи из запроса
sign_hash = 'f05c4e7bdf00620205d47696d77f924bfd3ba4d02b0398ac8a626e737dc27243'
webhook_key = base64.b64decode(bytes(webhook_key_base64,'utf-8'))
print('Signature verified?')
print(hmac.new(webhook_key, data.encode('utf-8'), hashlib.sha256).hexdigest() == sign_hash)
Реализуйте шаги проверки подписи:
- Возьмите значения полей из списка в
payment.signFields
уведомления (в том же порядке) в формате String. - Объедините значения в строку с разделителями
|
. - Зашифруйте строку п.2 алгоритмом SHA-256 с ключом проверки подписи.
- Сравните полученное значение со значением поля
hash
уведомления.
Пример расшифровки подписи (см. также функцию PHP на вкладке справа):
- По запросу пользователь получает ключ вебхука, закодированный в Base64:
JcyVhjHCvHQwufz+IHXolyqHgEc5MoayBfParl6Guoc=
- Приходит уведомление
{"messageId":"7814c49d-2d29-4b14-b2dc-36b377c76156","hookId":"5e2027d1-f5f3-4ad1-b409-058b8b8a8c22",
"payment":{"txnId":"13353941550","date":"2018-06-27T13:39:00+03:00","type":"IN","status":"SUCCESS","errorCode":"0","personId":78000008000,"account":"+79161112233","comment":"","provider":7,
"sum":{"amount":1,"currency":643},
"commission":{"amount":0,"currency":643},
"total":{"amount":1,"currency":643},
"signFields":"sum.currency,sum.amount,type,account,txnId"},
"hash":"76687ffe5c516c793faa46fafba0994e7ca7a6d735966e0e0c0b65eaa43bdca0","version":"1.0.0","test":false} - Склеиваются требуемые поля платежных данных (указаны в
payment.signFields
—sum.currency,sum.amount,type,account,txnId
):
643|1|IN|+79161112233|13353941550
- Поля шифруются методом SHA-256 с Base64-раскодированным ключом из п.1. Результат
f05c4e7bdf00620205d47696d77f924bfd3ba4d02b0398ac8a626e737dc27243
совпадает с параметромhash
из запроса.
Регистрация обработчика вебхуков
Запрос → PUT
curl -X PUT
"https://edge.qiwi.com/payment-notifier/v1/hooks?hookType=1¶m=http%3A%2F%2Fexample.com%2Fcallbacks%2F&txnType=2"
-H "accept: */*"
-H "authorization: Bearer <токен API>"
PUT /payment-notifier/v1/hooks?hookType=1¶m=http%3A%2F%2Fexample.com%2Fcallbacks%2F&txnType=2 HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer 3b7beb2044c4dd4a8f4588d4a6b6c93f
User-Agent: ****
-
URL /payment-notifier/v1/hooks?parameter=value
-
Параметры
Параметры передаются в query запроса. Все параметры обязательны.
Название | Тип | Описание |
---|---|---|
hookType | Integer | Тип хука. Только 1 — вебхук. |
param | URL-encoded | Адрес сервера обработки вебхуков. Длина исходного (не URL-encoded) адреса — не более 100 символов. URL обработчика должен быть доступен из Интернета. |
txnType | String | Тип транзакций, по которым будут включены уведомления. Возможные значения: 0 — только входящие транзакции (пополнения); 1 — только исходящие транзакции (платежи); 2 — все транзакции |
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"hookId":"d63a8729-f5c8-486f-907d-9fb8758afcfc",
"hookParameters":{
"url":"http://example.com/callbacks/"
},
"hookType":"WEB",
"txnType":"BOTH"
}
Ответ в формате JSON.
Название | Тип | Описание |
---|---|---|
hookId | String | UUID созданного вебхука |
hookParameters | Object | Набор параметров вебхука (только URL) |
hookType | String | Тип вебхука (только WEB) |
txnType | String | Тип транзакций, по которым отсылаются уведомления (IN — входящие, OUT — исходящие, BOTH — все) |
Удаление обработчика вебхуков
Запрос → DELETE
curl -X DELETE
"https://edge.qiwi.com/payment-notifier/v1/hooks/d63a8729-f5c8-486f-907d-9fb8758afcfc"
-H "accept: */*"
-H "authorization: Bearer <токен API>"
DELETE /payment-notifier/v1/hooks/d63a8729-f5c8-486f-907d-9fb8758afcfc HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer 3b7beb2044c4dd4a8f4588d4a6b6c93f
User-Agent: ****
-
URL /payment-notifier/v1/hooks/hookId
- hookId — UUID вебхука
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"response":"Hook deleted"
}
Формат ответа JSON.
Название | Тип | Описание |
---|---|---|
response | String | Описание результата операции |
Получение секретного ключа
Каждое уведомление содержит цифровую подпись сообщения, зашифрованную ключом. Используйте запрос для получения ключа проверки подписи.
Запрос → GET
curl -X GET
"https://edge.qiwi.com/payment-notifier/v1/hooks/d63a8729-f5c8-486f-907d-9fb8758afcfc/key"
-H "accept: */*"
-H "accept: */*"
-H "authorization: Bearer <токен API>"
GET /payment-notifier/v1/hooks/d63a8729-f5c8-486f-907d-9fb8758afcfc/key HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer 3b7beb2044c4dd4a8f4588d4a6b6c93f
User-Agent: ****
-
URL /payment-notifier/v1/hooks/hookId/key
- hookId — UUID вебхука
Ответ ←
HTTP/1.1 201 Created
Content-Type: application/json
{
"key":"L8UVF3JkLVUr6r70LiE0A9/5WoGGwWKG2pI/e+l/9fs="
}
Формат ответа JSON.
Название | Тип | Описание |
---|---|---|
key | String | Base64-закодированный ключ |
Изменение секретного ключа
Для смены ключа шифрования уведомлений используйте этот запрос.
Запрос → POST
curl -X POST
"https://edge.qiwi.com/payment-notifier/v1/hooks/d63a8729-f5c8-486f-907d-9fb8758afcfc/newkey"
-H "accept: */*"
-H "authorization: Bearer <токен API>"
POST /payment-notifier/v1/hooks/d63a8729-f5c8-486f-907d-9fb8758afcfc/newkey HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer 3b7beb2044c4dd4a8f4588d4a6b6c93f
User-Agent: ****
-
URL /payment-notifier/v1/hooks/hookId/newkey
- hookId — UUID вебхука
Ответ ←
HTTP/1.1 201 Created
Content-Type: application/json
{
"key":"OikS4/CcIbSf+yYGnLbnOige8RGoYmGxs/LNMwkJy7Q="
}
Формат ответа JSON.
Название | Тип | Описание |
---|---|---|
key | String | Base64-закодированный новый ключ |
Данные об обработчике уведомлений
Список действующих (активных) обработчиков уведомлений, связанных с вашим кошельком, можно получить данным запросом.
Так как сейчас используется только один тип хука — вебхук, то в ответе содержится только один объект данных.
Запрос → GET
curl -X GET
"https://edge.qiwi.com/payment-notifier/v1/hooks/active"
-H "accept: */*"
-H "accept: */*"
-H "authorization: Bearer <токен API>"
GET /payment-notifier/v1/hooks/active HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer 3b7beb2044c4dd4a8f4588d4a6b6c93f
User-Agent: ****
-
URL /payment-notifier/v1/hooks/active
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"hookId":"d63a8729-f5c8-486f-907d-9fb8758afcfc",
"hookParameters":{
"url":"http://example.com/callbacks/"
},
"hookType":"WEB",
"txnType":"BOTH"
}
Формат ответа JSON.
Название | Тип | Описание |
---|---|---|
hookId | String | UUID действующего обработчика вебхуков |
hookParameters | Object | Набор параметров обработчика (только URL) |
hookType | String | Тип вебхука (только WEB) |
txnType | String | Тип транзакций, по которым отсылаются уведомления (IN — входящие, OUT — исходящие, BOTH — все) |
Отправка тестового уведомления
Для проверки вашего обработчика вебхуков используйте этот запрос. Тестовое уведомление отправляется на адрес, указанный в параметрах действующего обработчика.
Запрос → GET
curl -X GET
"https://edge.qiwi.com/payment-notifier/v1/hooks/test"
-H "accept: */*"
-H "authorization: Bearer <токен API>"
GET /payment-notifier/v1/hooks/test HTTP/1.1
Host: edge.qiwi.com
Authorization: Bearer 3b7beb2044c4dd4a8f4588d4a6b6c93f
User-Agent: ****
-
URL /payment-notifier/v1/hooks/test
Ответ ←
HTTP/1.1 200 OK
Content-Type: application/json
{
"response":"Webhook sent"
}
Формат ответа JSON.
Название | Тип | Описание |
---|---|---|
response | String | Результат запроса |
Коды ошибок
Последнее обновление: 2022-01-21 | Этот раздел на GitHub
В случае ошибки API возвращается HTTP-код ошибки.
HTTP Код | Секция API | Описание |
---|---|---|
400 | Все | Ошибка синтаксиса запроса (неправильный формат данных) |
401 | Все | Неверный токен или истек срок действия токена API |
403 | Все | Нет прав на этот запрос (недостаточно разрешений у токена API) |
404 | История платежей, Информация о транзакции, Отправка квитанции | Не найдена транзакция или отсутствуют платежи с указанными признаками |
404 | Балансы, Профиль пользователя, Идентификация пользователя | Не найден кошелек |
404 | Веб-хуки | Не найден активный веб-хук |
404 | Оплата/Отмена счета | Не найден счет |
422 | Регистрация веб-хука | Неправильно указаны домен/подсеть/хост веб-хука (в параметре param для URL веб-хука), неправильно указаны тип хука или тип транзакции, попытка создать хук при наличии уже созданного |
423 | Все | Слишком много запросов, сервис временно недоступен |
500 | Все | Внутренняя ошибка сервиса (превышена длина URL веб-хука, проблемы с инфраструктурой, недоступность каких-либо ресурсов и т.д.) |
Следующие ошибки возвращаются на запросы истории платежей и информации о транзакции в параметре errorCode
ответа:
errorCode | Описание |
---|---|
0 | OK |
3 | Техническая ошибка. Повторите платеж позже. |
4 | Некорректный формат телефона или счета. Проверьте данные. |
5 | Данного номера не существует. Проверьте данные и попробуйте еще раз. |
8 | Техническая проблема на стороне банка-получателя. Попробуйте позже. |
57 | Статус кошелька получателя не позволяет перевести ему деньги. Попросите владельца кошелька повысить его статус: укажите паспортные данные. |
131 | Платеж недоступен для вашей страны |
166 | Ваш статус кошелька не позволяет совершить платеж. Повысьте статус кошелька: укажите паспортные данные. |
167 | Статус кошелька получателя не позволяет перевести ему деньги. Попросите владельца кошелька повысить его статус: указать паспортные данные. |
202 | Техническая ошибка. Повторите платеж позже. |
204 | Ваш статус кошелька не позволяет пополнять его наличными. Повысьте статус кошелька: укажите паспортные данные. |
220 | Недостаточно средств. Пополните кошелек |
241 | Сумма платежа должна быть больше 1 рубля |
242 | Сумма платежа превышает максимально допустимую |
254 | Сумма платежа должна быть больше 1 рубля |
271 | Техническая проблема на стороне банка-получателя. Попробуйте позже. |
300 | Техническая ошибка. Повторите платеж позже. |
303 | Неверный номер телефона — должно быть 10 цифр |
319 | Ваш статус кошелька не позволяет совершить платеж. Повысьте статус кошелька: укажите паспортные данные. |
407 | Недостаточно средств на вашей карте |
408 | У вас уже есть такой платеж — оплатите или отмените его |
455 | Платеж невозможен из-за ограничений на минимальный остаток |
461 | Время подтверждения операции истекло. Попробуйте еще раз. |
472 | Недостаточно денег на кошельке — пополните его |
500 | Техническая ошибка на стороне банка-получателя. Обратитесь в их поддержку. |
522 | Неверный номер или срок действия карты получателя. Проверьте данные и повторите попытку. |
547 | Неверный срок действия карты получателя. Проверьте данные и повторите попытку. |
548 | Истек срок действия карты получателя |
558 | Сумма платежа превышает максимально допустимую |
561 | Банк, куда вы переводите деньги, не принимает платеж. Обратитесь в его поддержку. |
700 | Превышен лимит для вашего статуса кошелька. Повысьте статус или уточните свой текущий лимит в разделе Профиль. |
702 | Платеж невозможен из-за ограничений у получателя. Превышен его лимит на остаток. Получателю необходимо связаться с нашей поддержкой. |
704 | Превышен ежемесячный лимит по вашему кошельку. Чтобы снять ограничения, повысьте статус кошелька в Профиле. |
705 | Превышен ежемесячный лимит по вашему кошельку. Чтобы снять ограничения, повысьте статус кошелька в Профиле. |
710 | Перевод невозможен – превышен лимит платежей за неделю в пользу одного и того же получателя |
711 | Перевод невозможен. Вы превысили лимит платежей для таких операций за месяц. |
716 | Вы превысили месячный лимит на снятие денег с карты. Чтобы снять ограничения, повысьте статус кошелька в Профиле. |
717 | Вы превысили дневной лимит на снятие денег с карты. Чтобы снять ограничения, повысьте статус кошелька в Профиле. |
746 | Перевод невозможен – превышен лимит в пользу одного и того же получателя |
747 | Перевод невозможен. Превышено количество операций в пользу одного и того же получателя. |
749 | Техническая ошибка. Обратитесь в нашу поддержку. |
750 | Техническая ошибка. Повторите платеж позже. |
757 | Превышен лимит на количество платежей. Чтобы снять ограничения, повысьте статус кошелька в Профиле. |
797 | Платеж был отменен, деньги возвращены на ваш кошелек |
852 | Перевод невозможен – превышен лимит в пользу одного и того же получателя |
866 | Платеж не проведен. Превышен лимит 5 000 RUB — на исходящие переводы из RUB, USD, EUR в KZT в месяц. Повысьте статус кошелька в Профиле и платите без ограничений. |
867 | Платеж не проведен. Превышен лимит 5 000 RUB — на входящие переводы из RUB, USD, EUR в KZT в месяц. Повысьте статус кошелька в Профиле и платите без ограничений. |
893 | Перевод отклонен. Истек его срок действия. |
901 | Истек срок действия кода для подтверждения платежа. Повторите платеж. |
943 | Превышен лимит на переводы в месяц. Повысьте статус кошелька в Профиле и переводите без ограничений. |
1050 | Превышен лимит на такие операции. Повысьте статус кошелька в Профиле и расширьте свои возможности. |
7000 | Платеж отклонен. Проверьте реквизиты карты и повторите платеж. |
7600 | Платеж отклонен. Обратитесь в банк, выпустивший карту. |
Содержание
- 1 Подробная инструкция восстановления пароля
- 2 Какой срок действия авторизации?
- 3 Выбор пароля для системы Qiwi
- 4 Срок действия авторизации
- 5 Причины появления сообщения
- 6 Как подобрать пароль при регистрации?
- 7 Как поменять пароль на киви кошельке?
Подробная инструкция восстановления пароля
Если вы забыли пароль, то его легко восстановить следуя инструкции:
- Заходим на страницу авторизации. В разделе поле «Логин» вводим номер телефона, а вместо пароля жмем на надпись «Забыли пароль?».
- В открывшемся поле вводим номер кошелька (телефона) и капчу.
- На ваш номер телефона приходит код, который надо ввести в новом открывшемся окне и нажать подтверждение.
- Придумываем новый пароль и дальше радостно пользуемся кошельком.
Быстро и легко пройдет восстановление, если код просто был забыт. Но в случае потери телефона или блокировки сим-карты дело обстоит гораздо сложнее. Привязка к почтовому ящику облегчит задачу. Тогда код для восстановления может быть выслан на e-mail.
При утере номера телефона нужно как можно быстрее связаться со службой технической поддержки сервиса по номеру 8-800-707-7759 или отправив письмо. Для этого на официальном портале qiwi в разделе «Помощь» надо заполнить специальные поля, подробно описать свою проблему и указать контактные данные, по которым с вами можно связаться.
Подробнее как обратиться в службу поддержки.
Чтобы вас могли идентифицировать, придется отправлять некоторые копии документов в главный офис. При утрате или блокировки симки может потребоваться договор, заключенный с оператором.
СОВЕТ!
Привязывайте кошелек киви только к вашей личной сим-карте, принадлежность которой подтверждена документально.
Какой срок действия авторизации?
По одному и тому же паролю можно входить в аккаунт сроком до одного года. Пользователь сам может выбирать срок действия авторизации. Но администрация сервиса то выставляет, то убирает поля, в которых можно самостоятельно прописать сроки. Система просит сменить комбинацию, если им пользуются в течение 12 месяцев.
Какие временные рамки можно выбрать:
- Один месяц;
- Два месяца;
- Три месяца;
- Шесть месяцев;
- Двенадцать месяцев.
Коротенькие шифры следует менять как можно чаще, а длинные можно и раз в году. Комбинации лучше всего запоминать, а не записывать. Но если с памятью дела обстоят не слишком хорошо, то записанные пароли следует хранить отдельно от гаджета, с которого осуществляется вход в аккаунт. Чтобы, например, при утере сумки, злоумышленники не смогли за пять минут опустошить ваш счет.
СЛЕДУЕТ ПОМНИТЬ!
Сменить пароль необходимо сразу же после получения сообщения об истечении срока действия, иначе система заблокирует вход и установит временный код.
Выбор пароля для системы Qiwi
Итак, начать, пожалуй, стоит с выбора наиболее эффективного кода безопасности. Это довольно интересный вопрос, ведь стоит понимать, что для авторизации в Киви нужно подтверждение по СМС. И, даже если вы сможете зайти без подтверждения, то в любом случае, любой перевод, любая настройка кошелька или изменение параметров будет требовать от вас подтверждения через СМС. Поэтому можно подумать, что сложный пароль в принципе не нужен.
Отчасти так и есть. Но, все же, не стоит забывать и о том, что с развитием и усилением систем безопасности, возникают новые и более ухищренные методы взлома. И упрощать задачу легким шифром не стоит. Ведь это ваши деньги. Поэтому, когда будете назначать пароль, к его выбору все же стоит подойти ответственно. И здесь есть несколько простых правил, чего НЕ стоит допускать:
-
Не нужно связывать его с какими-то значимыми датами в вашей жизни (дни рождения (ваш, друзей, детей, родителей и так далее), свадьба и тому подобное), с адресами и другими числами, которые известны не только вам.
-
Не стоит использовать имена, клички животных, номера счетов в банках и так далее.
-
Не стоит использовать названия каких-то значимых для вас мест, переводы каких-то слов. Вообще не используйте слова.
Итак, пароль должен состоять из рандомного набора цифр и букв. При этом обязательно использовать заглавные и прописные символы.
Главное, чтобы это не было каким-то словом, которое рано или поздно можно будет подобрать. Это должен быть простой набор ничего не значащих символов (букв и цифр).
Читайте также: Оплатить проездную карту «Стрелка» через QIWI
Срок действия авторизации
Что такое срок действия авторизации? Все очень просто. Когда вы регистрируете свой Qiwi кошелек, система просит вам придумать шифр, взломать который будет крайне сложно (при этом логином будет номер вашего телефона).
Код нужен для того, чтобы никто, кроме вас, не смог войти в кошелек и перевести средства. Но для повышения уровня безопасности Qiwi Wallet обновляет коды через определенные промежутки времени.
Проще говоря, система безопасности Qiwi заставляет пользователей менять свой ключ через определенный промежуток времени (от 1 до 12 месяцев). При этом за несколько дней до окончания действия шифра вам приходит СМС-сообщение с напоминанием о том, что вам нужно изменить свой код.
Если вы сами не измените его, то система назначит пароль автоматически и сообщит вам его в сообщении. Срок действия кода может варьироваться от 1 до 12 месяцев. Вы сами выбираете подходящий период, через который шифр нужно будет поменять: в момент регистрации, а также при смене кода.
Задача, как поменять пароль на Qiwi кошельке, не потребует от вас особых затрат времени.
Смена кода авторизации
Итак, если истек срок действия авторизации Qiwi, то пора сменить код для входа в Qiwi Wallet. Первое, что вам потребуется сделать – войти в свой кабинет. Для этого укажите свой номер телефона и старый шифр. В правом верхнем углу странички вы увидите несколько кнопок:
- История.
- Акции.
- Помощь.
- Настройки.
- Выйти.
Войдите в раздел «Настройки». На открывшейся странице вы увидите свой текущий статус. В меню слева будет множество категорий. Среди них нужно найти рубрику «Новый пароль». Нажимаем на нее левой кнопкой мышки.
Далее откроется вкладка, на которой вы увидите поле для заполнения:
- Новый пароль – здесь необходимо ввести новый шифр. Но помните, что он не должен совпадать ни с одним кодом, который вы использовали ранее. Иначе система просто не разрешит вам установить его.
Еще ниже вы увидите строку «Срок действия…». Это выбор времени, через которое ключ придется изменить. Он по умолчанию ставится на 12 месяцев.
В целях безопасности нужно поставить галочку в строке «Отключить все приложения».
Но при этом на телефоне (или планшете) придется заново входить в систему, а также по новой включать все нужные вам функции. После того, как вы все заполнили, нажимаем на кнопку «Сменить пароль». Вот и все, теперь вы с легкостью сможете самостоятельно поменять пароль на Qiwi кошельке. С этим понятно.
Но что делать, если забыл пароль от Киви и не возможно зайти в свой аккаунт? В таком случае нужно воспользоваться функцией «Восстановление ключа».
Как восстановить ключ для входа в Qiwi Wallet
Если вы забыли пароль от Qiwi кошелька и никак не можете его вспомнить, то просто откройте сайт qiwi.com. Прямо над строкой, в которую вы вводите свой шифр, есть надпись «Забыли пароль?». Эта функция поможет вам сменить пароль на Киви кошельке и восстановить доступ к своей учетной записи. Нажмите на эту надпись левой кнопкой мыши.
Дальше все очень просто. Вы попадаете на страничку, в которой нужно ввести номер своего счета (мобильного телефона). На указанный номер придет СМС с кодом для подтверждения. Ниже необходимо ввести капчу (цифры с картинки) и нажмите «Далее».
На следующем этапе нужно придумать новый ключ, ввести его повторно и снова ввести капчу. В самом низу будет еще одно поле, в которое необходимо ввести код из СМС. Нажмите кнопку «Подтвердить». На этом восстановление кода для входа в Qiwi Wallet завершено.
Причины появления сообщения
Причины появления «злосчастного» сообщения при попытке авторизации:
- Закончился срок эксплуатации предыдущего пароля. Он может составлять от одного до двенадцати месяцев, а затем буквенно-числовую комбинацию надо менять.
- Пользователь слишком часто авторизуется с разных устройств.
- Постоянно меняются геоданные пользователя. Система предполагает, что в аккаунт заходят разные люди из разных стран. Если только вы не заядлый путешественник, то логично предположить, что личный кабинет взломан посторонними лицами.
ВАЖНО!
Продвинутые пользователи, а также профессиональные хакеры, рекомендуют самостоятельно менять шифр раз в месяц, в крайнем случае – в полгода. Это касается не только кошелька qiwi, но и других ресурсов, например, страниц соцсетей.
Как подобрать пароль при регистрации?
Если вы являетесь новым пользователем и только-только собираетесь регистрироваться в системе, то серьезно отнеситесь к подбору пароля для киви кошелька.
Система Киви ставит следующие условия для выбора секретного слова:
- пароль должен состоят как минимум из 7 знаков;
- пароль должен включать минимум одну цифру.
Рядом со строчкой, предназначенной для введения пароля, находится активное поле, в котором указывается степень надежности. Старайтесь доводить пароль до максимальной степени, таким образом вы в разы обезопасите свой кошелек.
Не забывайте, что в случае взлома вы теряете не только личные данные и доступ в систему, но и денежные средства. Сменить пароль можно в любое время, что, кстати, советуют делать многие специалисты. Если срок действия пароля истек, то просто поменяйте его или восстановите по инструкции, указанной ниже.
Для того, чтобы пароль был надежным, достаточно добавить один символ к общим требованиям.
Как поменять пароль на киви кошельке?
Сменить шифр можно за считанные минуты, главное заранее придумать комбинацию из восьми и более знаков, среди которых должна быть как минимум одна цифра. Сразу забудьте о числах, повторяющих дату рождения или номер телефона. Система посчитает их ненадежными, и моментально отвергнет. То же самое касается числовых комбинаций типа 12345.
Важно!
Нельзя использовать те же самые ключи, которые ранее применялись для входа в личный кабинет qiwi.
Алгоритм действий как сменить пароль в киви кошельке:
- Входим в аккаунт, используя еще действующий старый шифр.
- В настройках нажимает на раздел «Новый пароль».
- В соответствующих полях вводим старый и дважды новый пароль. Внимательно следим, чтобы новый оба раза был введен правильно (проверяем язык ввода, Caps Lock).
- Обязательно ставим галочку напротив надписи «Отключить приложения».
- Ждем СМС-сообщение с одноразовым кодом, который вносим в отведенное ему поле внизу. Если код не пришел, то через определенное время можно запросить его снова. Часто помогает перезагрузка гаджета. Если после этого пришло сразу несколько сообщений, то код вводится с самого последнего из них.
Читайте также: Почему СМС от Киви не приходит?Используемые источники:
- https://paywallet.org/qiwi/pro-bezopasnost/srok-dejstviya-parolya-qiwi.html
- https://guland.biz/internet/qiwi/parol-kivi-koshelka.html
- https://plateginfo.com/qiwi/bezopasnost/istek-srok-dejstviya-parolya.html
- https://qiwikoshelek.ru/info/9-parol-dlya-kivi-koshelka.html
API QIWI Кошелька позволяет автоматизировать получение информации о вашем счёте в сервисе QIWI Кошелек и проводить операции с его помощью. Методы API доступны после регистрации пользователя в сервисе QIWI Кошелек.
- Где взять API ключ QIWI?
- Как создать секретный ключ киви?
- Как пройти идентификацию в киви?
- Как выставить счет с киви на карту?
- Как узнать свой API ключ?
- Как получить API QIWI?
- Как разводят с помощью Киви?
- Какой пароль от Киви?
- Как можно заработать деньги на Киви кошелек?
- Можно ли использовать Киви без идентификации?
- Что будет если использовать чужие паспортные данные в Киви?
- Куда можно перевести деньги с Киви без идентификации?
- Можно ли иметь два кошелька Киви?
- Как вывести деньги с Киви?
- Что значит выставить счет в Киви кошельке?
- Что такое ключ API?
- Как настроить API ключ?
- Как сменить API ключ?
- Как получить доступ к киви?
- Как зайти в киви без паспорта?
- Как сделать оплату Qiwi на сайте?
- Можно ли пользоваться Киви до 14 лет?
- Какой лимит на Киви?
- Сколько по времени проходит Идентификация Киви?
- Можно ли перевести деньги с киви на карту без комиссии?
- Что за реквизиты в киви?
- Как правильно выставить счет на оплату?
- Как сделать API ключ?
- Как сделать ссылку на оплату киви?
Где взять API ключ QIWI?
Перед отправкой запросов в API нужно получить специальный токен — это ваш ключ доступа к кошельку. Получить токен можно в разделе https://qiwi.com/api.
Как создать секретный ключ киви?
Авторизуйтесь в личном кабинете https://p2p.qiwi.com/:
- Перейдите на вкладку API и нажмите кнопку Создать пару ключей и настроить.
- Укажите название для пары ключей и нажмите кнопку Создать.
- Сохраните секретный ключ в безопасном месте — в дальнейшем он не будет отображаться в интерфейсе.
- Нажмите кнопку Дальше.
Как пройти идентификацию в киви?
Как пройти идентификацию в QIWI Кошельке?:
- Перейдите в раздел «Идентификация».
- Выберите статус «Основной» и нажмите «Получить этот статус».
- Авторизуйтесь в QIWI Кошельке при необходимости.
- Заполните форму, указав информацию о себе: ФИО, дату рождения и паспортные данные.
Как выставить счет с киви на карту?
Чтобы выставить счет другому пользователю QIWI Кошелька, перейдите в раздел «Счета к оплате», нажмите кнопку «Выставить новый счет» укажите номер телефона адресата (того, кто должен оплатить счет) и сумму, затем нажмите «Выставить».
Как узнать свой API ключ?
Как получить ключ API:
- Перейдите на страницу выбора проекта в Cloud Console.
- Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
- На странице Credentials (Учетные данные) нажмите Create credentials > API key (Создать учетные данные > Ключ API).
- Нажмите Закрыть.
Как получить API QIWI?
Откройте в браузере страницу https://qiwi.com/api. Для этого потребуется авторизоваться или зарегистрироваться в сервисе QIWI Кошелек. После этого нажмите Выпустить новый токен.
Как разводят с помощью Киви?
Суть развода.
Мошенник хочет купить вещь из объявления и предлагает перевести деньги на кошелек «Киви». Сперва он просит отправить маленькую сумму, чтобы убедиться в правильном номере кошелька. А затем требует оплатить несколько тысяч комиссии за перевод крупной суммы, которую обещает вернуть.
Какой пароль от Киви?
Код доступа — это 4-значный код для входа в мобильное приложение QIWI Кошелек. Вы устанавливаете его самостоятельно после установки приложения: В открывшейся форме введите номер телефона — на ваш номер будет направлено SMS с одноразовым кодом. Введите код из SMS и придумайте 4-значный код доступа.
Как можно заработать деньги на Киви кошелек?
На сайте qiwi.com:
- Зайдите в раздел «Переводы» и нажмите «Перевод на QIWI Кошелек»
- Укажите номер кошелька для перевода в формате +79123456789 (номер кошелька = номер телефона)
- Введите сумму и выберите удобный способ оплаты: счет вашего кошелька, карта любого банка или баланс телефона
Можно ли использовать Киви без идентификации?
Ваши возможности в QIWI Кошельке зависят от его статуса. Чтобы пополнять кошелек наличными, держать в кошельке больше денег, платить и переводить без ограничений, нужно пройти идентификацию — это требование закона ст. 7 115-ФЗ.
Что будет если использовать чужие паспортные данные в Киви?
Здравствуйте, Олег! Если Вы своими действиями с использованием паспорта третьего лица (друга Вашего друга) причинили ему реальный вред, то в Ваших действиях может содержаться состав преступления, предусмотренный ст. 159 УК РФ (мошенничество).
Куда можно перевести деньги с Киви без идентификации?
— Совершить перевод на QIWI Кошелек: просто введите номер Кошелька получателя и сумму платежа, далее выберите способ оплаты «Картой без регистрации» и заполните реквизиты карты отправителя.
Можно ли иметь два кошелька Киви?
Правилами Qiwi разрешено иметь несколько кошельков одному человеку.
Как вывести деньги с Киви?
На сайте qiwi.com:
- Авторизуйтесь в QIWI Кошельке — введите номер телефона и пароль
- В разделе «Переводы» выберите «Переводы на карту»
- Введите номер карты получателя
- Укажите сумму
- Выберите способ оплаты: оплатить QIWI Кошельком или картой
- Подтвердите оплату
Что значит выставить счет в Киви кошельке?
Для этого в качестве способа оплаты выберите QIWI Кошелек, в появившейся форме укажите номер своего мобильного телефона и нажмите кнопку «Выставить счет». В системе автоматически сформируется счет, и откроется дополнительное поле, в котором можно сразу же оплатить этот счет.
Что такое ключ API?
Ключи API — это собственная форма аутентификации, для которой не требуется внешнего репозитория хранения паролей. Как системный администратор вы должны создать пользователей Maximo для внешних клиентов, прежде чем создавать ключи API для этих клиентов.
Как настроить API ключ?
Как настроить для ключа допустимые API:
- Перейдите на панель учетных данных.
- Выберите нужный ключ API. Откроется страница Добавление ограничений и изменение названия ключа API.
- В разделе Допустимые API: Нажмите Restrict key (Применить ограничения для ключа).
- Нажмите Сохранить.
Как сменить API ключ?
Возьмите за привычку регулярно менять свой Steam Web API ключ. Для этого перейдите на страницу ключа Steam API и нажмите «Отозвать мой ключ Steam Web API». Новый ключ будет сгенерирован системой автоматически.
Как получить доступ к киви?
- Выберите «Забыли код доступа?» и далее «Восстановить»
- Введите номер Кошелька и нажмите «Далее» — на ваш номер будет направлено SMS с одноразовым кодом
- Затем введите код из SMS.
- Введите код из письма, отправленного на почту, и придумайте новый код доступа. Вы будете вводить его при входе в приложение
Как зайти в киви без паспорта?
Нужно скачать приложение «Киви» на официальном сайте, указать номер телефона и нажать «Создать». Затем будет отправлен код подтверждения на смартфон для создания кошелька. Пополнять его можно как с помощью банковской карты, так и с мобильного телефона либо терминала.
Как сделать оплату Qiwi на сайте?
Авторизуйтесь на p2p.qiwi.com. Перейдите на вкладку API. Нажмите «Создать пару ключей и настроить» и придумайте название, по которому потом сможете понять, о каком магазине речь. Подключите уведомления об оплате счетов, отметив «Использовать эту пару ключей для серверных оповещений».
Можно ли пользоваться Киви до 14 лет?
Физические лица могут выступать в качестве Пользователя при достижении возраста 14 (четырнадцати) лет при условии использования Платежного сервиса QIWI Кошелек и совершения Платежа Page 8 при оплате мелких бытовых покупок и покупок за счет своего дохода (стипендии, заработка и т. п.)
Какой лимит на Киви?
Согласно новым условиям Visa QIWI Кошелька, максимальная сумма одного денежного перевода, зачисляемого на банковскую карту получателя, составляет 500 тыс. рублей в день. Для денежных переводов с выплатой в пунктах системы CONTACT лимит на одну операцию по России установлен на уровне 500 тыс.
Сколько по времени проходит Идентификация Киви?
Ответа можно ждать по 6 часов. Отправил им свои паспортные данные.
Можно ли перевести деньги с киви на карту без комиссии?
«Обойти» комиссию при выводе средств с кошелька «Киви» можно, если у вас есть карточка банка «Тинькофф кредитные системы» (или ТКС). Кроме того, у вас должен быть идентифицированный мобильный кошелёк, к которому привязана ваша карточка. Для вывода денег вам нужно создать соответствующую заявку.
Что за реквизиты в киви?
Реквизиты для перевода:
- Получатель: КИВИ Банк (АО)
- ИНН: 3123011520.
- Банк получателя: КИВИ Банк (АО)
- БИК: 044525416.
- КПП: 772601001.
- Счет: 47416810600000000004.
- Корр. счет: 30101810645250000416 открыт в ГУ Банка России по Центральному федеральному округу
- Назначение платежа: Пополнение QIWI Кошелька N +7XXX XXX-XX-XX.
Как правильно выставить счет на оплату?
Как правильно заполнить счёт на оплату
Название (ФИО), адрес, ИНН и КПП (при наличии) плательщика. Информация о товаре или услуге: наименование, единицы измерения, количество, цена и итоговая стоимость. Номер договора с покупателем (если такой договор имеется). Данные об НДС.
Как сделать API ключ?
Создание API-ключа:
- В консоли управления перейдите в каталог, которому принадлежит сервисный аккаунт.
- Перейдите на вкладку Сервисные аккаунты.
- Выберите сервисный аккаунт и нажмите на строку с его именем.
- Нажмите кнопку Создать новый ключ на верхней панели.
- Выберите пункт Создать API-ключ.
Как сделать ссылку на оплату киви?
Для этого достаточно указать паспортные данные. Авторизуйтесь на p2p.qiwi.com. Выставьте свой первый счет: укажите сумму и добавьте комментарий (там можно написать название товара или услуги). Отправьте готовую ссылку клиенту.
Ответить
- Где взять API ключ QIWI?
- Как зайти в киви без паспорта?
- Как настроить API ключ?
- Как получить API QIWI?
- Как получить доступ к киви?
- Как сделать API ключ?
- Как сменить API ключ?
- Как создать секретный ключ киви?
- Как узнать свой API ключ?
- Какой пароль от Киви?
- Что такое ключ API?