API reference

Payment wrappers

class glQiwiApi.QiwiWrapper(api_access_token: Optional[str] = None, phone_number: Optional[str] = None, secret_p2p: Optional[str] = None, without_context: bool = False, cache_time: Union[float, int] = 0, *args, **kwargs)[source]

Delegates the work of QIWI API, webhooks, polling. Fast and versatile wrapper.

Parameters
  • api_access_token – токен, полученный с https://qiwi.com/api

  • phone_number – номер вашего телефона с +

  • secret_p2p – секретный ключ, полученный с https://p2p.qiwi.com/

  • without_context – bool, указывает, будет ли объект класса “глобальной” переменной или будет использована в async with контексте

  • cache_time – Время кэширование запросов в секундах, по умолчанию 0, соответственно, запрос не будет использовать кэш по дефолту, максимальное время кэширование 60 секунд

  • proxy – Прокси, которое будет использовано при создании сессии, может замедлить работу АПИ

async get_current_webhook() glQiwiApi.types.qiwi_types.webhooks.WebHookConfig[source]
Список действующих (активных) обработчиков уведомлений,

связанных с вашим кошельком, можно получить данным запросом.

Так как сейчас используется только один тип хука - webhook,

то в ответе содержится только один объект данных

async get_webhook_secret_key(hook_id: str) str[source]
Каждое уведомление содержит цифровую подпись сообщения,

зашифрованную ключом.

Для получения ключа проверки подписи используйте данный запрос.

Parameters

hook_id – UUID of webhook

Returns

Base64-закодированный ключ

async delete_current_webhook() Optional[Dict[str, str]][source]

Method to delete webhook

Returns

Описание результата операции

async change_webhook_secret(hook_id: str) str[source]

Для смены ключа шифрования уведомлений используйте данный запрос.

Parameters

hook_id – UUID of webhook

Returns

Base64-закодированный ключ

async bind_webhook(url: Optional[str] = None, transactions_type: int = 2, *, send_test_notification: bool = False, delete_old: bool = False) Tuple[Optional[glQiwiApi.types.qiwi_types.webhooks.WebHookConfig], str][source]

[NON-API] EXCLUSIVE method to register new webhook or get old

Parameters
  • url – service url

  • transactions_type – 0 => incoming, 1 => outgoing, 2 => all

  • send_test_notification – test_qiwi will send you test webhook update

  • delete_old – boolean, if True - delete old webhook

Returns

Tuple of Hook and Base64-encoded key

async get_balance(_QiwiWrapper__account_number: int = 1) glQiwiApi.types.basics.Sum[source]

Метод для получения баланса киви

async transactions(rows_num: int = 50, operation: str = 'ALL', start_date: Optional[datetime.datetime] = None, end_date: Optional[datetime.datetime] = None) List[glQiwiApi.types.qiwi_types.transaction.Transaction][source]

Метод для получения транзакций на счёту Более подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?http#payments_list

Возможные значения параметра operation:
  • ‘ALL’

  • ‘IN’

  • ‘OUT’

  • ‘QIWI_CARD’

Parameters
  • rows_num – кол-во транзакций, которые вы хотите получить

  • operation – Тип операций в отчете, для отбора.

:param start_date:Начальная дата поиска платежей.

Используется только вместе с end_date.

Parameters

end_date – конечная дата поиска платежей. Используется только вместе со start_date.

async transaction_info(transaction_id: Union[str, int], transaction_type: str) glQiwiApi.types.qiwi_types.transaction.Transaction[source]

Метод для получения полной информации о транзакции

Подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?python#txn_info

Parameters
  • transaction_id – номер транзакции

  • transaction_type – тип транзакции, может быть только IN или OUT

Returns

Transaction object

async check_restriction() List[glQiwiApi.types.qiwi_types.restriction.Restriction][source]

Метод для проверки ограничений на вашем киви кошельке

Подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?python#restrictions

Returns

Список, где находиться словарь с ограничениями, если ограничений нет - возвращает пустой список

property identification: glQiwiApi.types.qiwi_types.identification.Identification

Функция, которая позволяет получить данные идентификации вашего кошелька Более подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?http#ident

Returns

Response object

async check_transaction(amount: Union[int, float], transaction_type: str = 'IN', sender: Optional[str] = None, rows_num: int = 50, comment: Optional[str] = None) bool[source]

[ NON API METHOD ] Метод для проверки транзакции.

Данный метод использует self.transactions(rows_num=rows_num) для получения платежей.

Для небольшой оптимизации вы можете уменьшить rows_num задав его, однако это не гарантирует правильный результат Возможные значения параметра transaction_type:

  • ‘IN’

  • ‘OUT’

  • ‘QIWI_CARD’

Parameters
  • amount – сумма платежа

  • transaction_type – тип платежа

  • sender – номер получателя

  • rows_num – кол-во платежей, которое будет проверяться

  • comment – комментарий, по которому будет проверяться транзакция

Returns

bool, есть ли такая транзакция в истории платежей

async get_limits() Dict[str, glQiwiApi.types.qiwi_types.limit.Limit][source]

Функция для получения лимитов по счёту киви кошелька

Возвращает лимиты по кошельку в виде списка, если лимита по определенной стране нет, то не включает его в список Подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?http#limits

Returns

Limit object of Limit(pydantic)

async get_list_of_cards() List[glQiwiApi.types.qiwi_types.qiwi_master.Card][source]

Данный метод позволяет вам получить список ваших карт.

async authenticate(birth_date: str, first_name: str, last_name: str, patronymic: str, passport: str, oms: Optional[str] = None, inn: Optional[str] = None, snils: Optional[str] = None) Optional[Dict[str, bool]][source]

Данный запрос позволяет отправить данные для идентификации вашего QIWI кошелька. Допускается идентифицировать не более 5 кошельков на одного владельца

Для идентификации кошелька вы обязательно должны отправить ФИО, серию/номер паспорта и дату рождения.

Если данные прошли проверку, то в ответе будет отображен ваш ИНН и упрощенная идентификация кошелька будет установлена. В случае если данные не прошли проверку, кошелек остается в статусе “Минимальный”.

Parameters
  • birth_date – Дата рождения в виде строки формата 1998-02-11

  • first_name – Ваше имя

  • last_name – Ваша фамилия

  • patronymic – Ваше отчество

  • passport – Серия / Номер паспорта. Пример 4400111222

  • oms

  • snils

  • inn

async get_receipt(transaction_id: Union[str, int], transaction_type: str, dir_path: Union[str, pathlib.Path] = None, file_name: Optional[str] = None) Union[bytes, int][source]

Метод для получения чека в формате байтов или файлом.

Возможные значения transaction_type:
  • ‘IN’

  • ‘OUT’

  • ‘QIWI_CARD’

Parameters
  • transaction_id – str or int, id транзакции, можно получить при вызове методе to_wallet, to_card

  • transaction_type – тип транзакции может быть: ‘IN’, ‘OUT’, ‘QIWI_CARD’

  • dir_path – путь к директории, куда вы хотите сохранить чек, если не указан, возвращает байты

  • file_name – Имя файла без формата. Пример: my_receipt

Returns

pdf файл в байтовом виде или номер записанных байтов

property account_info: glQiwiApi.types.qiwi_types.account_info.QiwiAccountInfo

Метод для получения информации об аккаунте

async fetch_statistics(start_date: Union[datetime.datetime, datetime.timedelta], end_date: Union[datetime.datetime, datetime.timedelta], operation: str = 'ALL', sources: Optional[List[str]] = None) glQiwiApi.types.qiwi_types.stats.Statistic[source]

Данный запрос используется для получения сводной статистики по суммам платежей за заданный период.

Более подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?http#payments_list

Parameters
  • start_date – Начальная дата периода статистики. Обязательный параметр

  • end_date – Конечная дата периода статистики. Обязательный параметр

  • operation

    Тип операций, учитываемых при подсчете статистики. Допустимые значения:

    ALL - все операции, IN - только пополнения, OUT - только платежи, QIWI_CARD - только платежи по картам QIWI (QVC, QVP). По умолчанию ALL.

  • sources – Источники платежа, по которым вернутся данные. QW_RUB - рублевый счет кошелька, QW_USD - счет кошелька в долларах, QW_EUR - счет кошелька в евро, CARD - привязанные и непривязанные к кошельку банковские карты, MK - счет мобильного оператора. Если не указан, учитываются все источники платежа.

async list_of_balances() List[glQiwiApi.types.qiwi_types.account.Account][source]

Запрос выгружает текущие балансы счетов вашего QIWI Кошелька. Более подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?http#balances_list

async available_balances() List[glQiwiApi.types.qiwi_types.balance.Balance][source]

Запрос отображает псевдонимы счетов, доступных для создания в вашем QIWI Кошельке Сигнатура объекта ответа: class Balance(BaseModel):

alias: str currency: int

property transaction_handler

Handler manager for default QIWI transactions, you can pass on lambda filter, if you want, but it must to return a boolean

property bill_handler

Handler manager for P2P bills, you can pass on lambda filter, if you want But it must to return a boolean

async to_wallet(to_number: str, trans_sum: Union[str, float, int], currency: str = '643', comment: str = '+comment+') Optional[str][source]

Метод для перевода денег на другой кошелек

Подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/?python#p2p

Parameters
  • to_number – номер получателя

  • trans_sum – кол-во денег, которое вы хотите перевести

  • currency – особенный код валюты

  • comment – комментарий к платежу

async to_card(trans_sum: Union[float, int], to_card: str) Optional[str][source]

Метод для отправки средств на карту. Более подробная документация: https://developer.qiwi.com/ru/qiwi-wallet-personal/#cards

Parameters
  • trans_sum – сумма перевода

  • to_card – номер карты получателя

Returns

async commission(to_account: str, pay_sum: Union[int, float]) glQiwiApi.types.qiwi_types.commission.Commission[source]

Возвращается полная комиссия QIWI Кошелька за платеж в пользу указанного провайдера с учетом всех тарифов по заданному набору платежных реквизитов.

Parameters
  • to_account – номер карты или киви кошелька

  • pay_sum – сумма, за которую вы хотите узнать комиссию

Returns

Commission object

async get_cross_rates() List[glQiwiApi.types.qiwi_types.other.CrossRate][source]

Метод возвращает текущие курсы и кросс-курсы валют КИВИ Банка.

async payment_by_payment_details(payment_sum: glQiwiApi.types.basics.Sum, payment_method: glQiwiApi.types.qiwi_types.other.PaymentMethod, fields: glQiwiApi.types.qiwi_types.other.FreePaymentDetailsFields, payment_id: Optional[str] = None) glQiwiApi.types.qiwi_types.payment_info.PaymentInfo[source]

Оплата услуг коммерческих организаций по их банковским реквизитам.

Parameters
  • payment_id – id платежа, если не передается, используется uuid4

  • payment_sum – обьект Sum, в котором указывается сумма платежа

  • payment_method – метод платежа

  • fields – Набор реквизитов платежа

async buy_qiwi_master() glQiwiApi.types.qiwi_types.payment_info.PaymentInfo[source]

Метод для покупки пакета QIWI Мастер

Для вызова методов API вам потребуется токен API QIWI Wallet с разрешениями на следующие действия:

  1. Управление виртуальными картами,

  2. Запрос информации о профиле кошелька,

  3. Просмотр истории платежей,

  4. Проведение платежей без SMS.

Эти права вы можете выбрать при создании нового апи токена, чтобы пользоваться апи QIWI Master

async issue_qiwi_master_card(card_alias: str = 'qvc-cpa') Optional[glQiwiApi.types.qiwi_types.qiwi_master.OrderDetails][source]

Выпуск новой карты, используя Qiwi Master API

При выпуске карты производиться 3, а возможно 3 запроса, а именно по такой схеме:

  • __pre_qiwi_master_request - данный метод создает заявку

  • _confirm_qiwi_master_request - подтверждает выпуск карты

  • __buy_new_qiwi_card - покупает новую карту, если такая карта не бесплатна

Подробная документация:

https://developer.qiwi.com/ru/qiwi-wallet-personal/#qiwi-master-issue-card

Parameters

card_alias – Тип карты

Returns

OrderDetails

async reject_p2p_bill(bill_id: str) glQiwiApi.types.qiwi_types.bill.Bill[source]

Метод для отмены транзакции.

Parameters

bill_id – номер p2p транзакции

Returns

Bill obj

async check_p2p_bill_status(bill_id: str) str[source]

Метод для проверки статуса p2p транзакции.

Возможные типы транзакции:

WAITING Счет выставлен, ожидает оплаты

PAID Счет оплачен

REJECTED Счет отклонен

EXPIRED Время жизни счета истекло. Счет не оплачен

Более подробная документация: https://developer.qiwi.com/ru/p2p-payments/?shell#invoice-status

Parameters

bill_id – номер p2p транзакции

Returns

статус транзакции строкой

async create_p2p_bill(amount: Union[int, float], bill_id: Optional[str] = None, comment: Optional[str] = None, life_time: Optional[datetime.datetime] = None, theme_code: Optional[str] = None, pay_source_filter: Optional[List[str]] = None) glQiwiApi.types.qiwi_types.bill.Bill[source]

Метод для выставление p2p счёта. Надежный способ для интеграции. Параметры передаются server2server с использованием авторизации. Возможные значения pay_source_filter:

  • ‘qw’

  • ‘card’

  • ‘mobile’

Parameters
  • amount – сумма платежа

  • bill_id – уникальный номер транзакции, если не передан, генерируется автоматически,

  • life_time – дата, до которой счет будет доступен для оплаты.

  • comment – комментарий к платежу

  • theme_code – специальный код темы

  • pay_source_filter – При открытии формы будут отображаться только указанные способы перевода

async get_bills(rows_num: int, bill_statuses: str = 'READY_FOR_PAY') List[glQiwiApi.types.qiwi_types.bill.Bill][source]

Метод получения списка неоплаченных счетов вашего кошелька. Список строится в обратном хронологическом порядке. По умолчанию, список разбивается на страницы по 50 элементов в каждой, но вы можете задать другое количество элементов (не более 50). В запросе можно использовать фильтры по времени выставления счета, начальному идентификатору счета.

async refund_bill(bill_id: Union[str, int], refund_id: Union[str, int], json_bill_data: Union[glQiwiApi.types.basics.OptionalSum, Dict[str, Union[str, int]]]) glQiwiApi.types.qiwi_types.bill.RefundBill[source]

Метод позволяет сделать возврат средств по оплаченному счету. в JSON-теле запроса параметра json_bill_data:

amount.value - сумма возврата.

amount.currency - валюта возврата.

Может быть словарем или объектом OptionalSum

Пример словаря: {

“amount”: {

“currency”: “RUB”, “value”: 1 }

}

Parameters
  • bill_id – уникальный идентификатор счета в системе мерчанта

  • refund_id – уникальный идентификатор возврата в системе мерчанта.

  • json_bill_data

Returns

RefundBill object

async create_p2p_keys(key_pair_name: str, server_notification_url: Optional[str] = None) glQiwiApi.types.qiwi_types.bill.P2PKeys[source]

Метод создает новые p2p ключи

Parameters
  • key_pair_name – Название пары токенов P2P (произвольная строка)

  • server_notification_url – url для вебхуков, необязательный параметр

class glQiwiApi.YooMoneyAPI(*args, **kwargs)[source]

Класс, реализующий обработку запросов к YooMoney Удобен он тем, что не просто отдает json подобные объекты, а всё это конвертирует в pydantic модели. Для работы с данным классом, необходимо зарегистрировать токен, используя гайд на официальном github проекта

Конструктор принимает токен, полученный из класс метода

get_access_token

и специальный аттрибут without_context,

Parameters
  • api_access_token – апи токен для запросов

  • without_context – bool, указывающая будет ли объект класса “глобальной” переменной или будет использована в async with контексте

  • cache_time – Время кэширование запросов в секундах, по умолчанию 0, соответственно, запрос не будет использовать кэш по дефолту, максимальное время кэширование 60 секунд

async classmethod build_url_for_auth(scope: List[str], client_id: str, redirect_uri: str = 'https://example.com') Optional[str][source]

Метод для получения ссылки для дальнейшей авторизации и получения токена

Parameters
  • scope – OAuth2-авторизации приложения пользователем, права передаются списком.

  • client_id – идентификатор приложения, тип string

  • redirect_uri – воронка, куда попадет временный код, который нужен для получения основного токена

Returns

ссылку, по которой нужно перейти и сделать авторизацию через логин/пароль

async classmethod get_access_token(code: str, client_id: str, redirect_uri: str = 'https://example.com', client_secret: Optional[str] = None) str[source]

Метод для получения токена для запросов к YooMoney API

Parameters
  • code – временный код, который был получен в методе base_authorize

  • client_id – идентификатор приложения, тип string

  • redirect_uri – воронка, куда попадет временный код, который нужен для получения основного токена

  • client_secret – Секретное слово для проверки подлинности приложения. Указывается, если сервис зарегистрирован с проверкой подлинности.

Returns

YooMoney API TOKEN

async revoke_api_token() Optional[Dict[str, bool]][source]

Метод для отмены прав токена, при этом все его права тоже пропадают Документация: https://yoomoney.ru/docs/wallet/using-api/authorization/revoke-access-token

property account_info: glQiwiApi.types.yoomoney_types.types.AccountInfo

Метод для получения информации об аккаунте пользователя Подробная документация: https://yoomoney.ru/docs/wallet/user-account/account-info

Returns

объект AccountInfo

async transactions(operation_types: Optional[Union[List[glQiwiApi.types.yoomoney_types.types.OperationType], Tuple[glQiwiApi.types.yoomoney_types.types.OperationType, ...]]] = None, start_date: Optional[datetime.datetime] = None, end_date: Optional[datetime.datetime] = None, start_record: Optional[int] = None, records: int = 30, label: Optional[Union[str, int]] = None) List[glQiwiApi.types.yoomoney_types.types.Operation][source]

Подробная документация: https://yoomoney.ru/docs/wallet/user-account/operation-history

Метод позволяет просматривать историю операций (полностью или частично) в постраничном режиме.

Записи истории выдаются в обратном хронологическом порядке: от последних к более ранним.

Перечень типов операций, которые требуется отобразить.

Возможные значения: DEPOSITION — пополнение счета (приход);

PAYMENT — платежи со счета (расход);

INCOMING(incoming-transfers-unaccepted) —

непринятые входящие P2P-переводы любого типа.

Parameters
  • operation_types – Тип операций

  • label – string. Отбор платежей по значению метки. Выбираются платежи, у которых указано заданное значение параметра label вызова request-payment.

  • start_date – datetime Вывести операции от момента времени (операции, равные start_date, или более поздние) Если параметр отсутствует, выводятся все операции.

  • end_date – datetime Вывести операции до момента времени (операции более ранние, чем end_date). Если параметр отсутствует, выводятся все операции.

  • start_record

    string Если параметр присутствует, то будут отображены операции, начиная

    с номера start_record.

    Операции нумеруются с 0. Подробнее про постраничный вывод списка

  • records – int Количество запрашиваемых записей истории операций. Допустимые значения: от 1 до 100, по умолчанию — 30.

async transaction_info(operation_id: str) glQiwiApi.types.yoomoney_types.types.OperationDetails[source]

Позволяет получить детальную информацию об операции из истории. Требуемые права токена: operation-details. Более подробная документация: https://yoomoney.ru/docs/wallet/user-account/operation-details

Parameters

operation_id – Идентификатор операции

async send(to_account: str, amount: Union[int, float], money_source: str = 'wallet', pattern_id: str = 'p2p', cvv2_code: str = '', card_type: Optional[str] = None, protect: bool = False, comment_for_history: Optional[str] = None, comment: Optional[str] = None, expire_period: int = 1) glQiwiApi.types.yoomoney_types.types.Payment[source]

Метод для отправки денег на аккаунт или карту другого человека. Данная функция делает сразу 2 запроса, из-за этого

вы можете почувствовать небольшую потерю производительности,

вы можете использовать метод

_pre_process_payment и получать объект PreProcessPaymentResponse, в котором есть информация о ещё неподтвержденном платеже

Более подробная документация: https://yoomoney.ru/docs/wallet/process-payments/process-payment

Parameters
  • pattern_id – Идентификатор шаблона платежа

  • to_account – string Идентификатор получателя перевода (номер счета, номер телефона или email).

  • amount – Сумма к получению (придет на счет получателя счет после оплаты). МИНИМАЛЬНАЯ СУММА 2.

  • money_source – Запрашиваемый метод проведения платежа. wallet — со счета пользователя, если вы хотите использовать card, тогда нужно будет передать card_type для поиска карты в списке ваших банковских карт, а также опционально cvv2 код для проведения платежа

  • comment_for_history – Комментарий к переводу, отображается в истории отправителя.

  • card_type – Тип банковской карты, нужно заполнять, только если вы хотите списать средства с вашей карты

  • cvv2_code – опционально, может быть не передан, однако, если для оплаты картой это требуется, параметр стоит передавать

  • comment – Комментарий к переводу, отображается получателю.

  • protect – Значение параметра true — признак того, что перевод защищен кодом протекции. По умолчанию параметр отсутствует (обычный перевод).

  • expire_period – Число дней, в течении которых: получатель перевода может ввести код протекции и получить перевод на свой счет, получатель перевода до востребования может получить перевод. Значение параметра должно находиться в интервале от 1 до 365. Необязательный параметр. По умолчанию 1.

property balance: float

Метод для получения баланса на кошельке yoomoney

async accept_incoming_transaction(operation_id: str, protection_code: str) glQiwiApi.types.yoomoney_types.types.IncomingTransaction[source]

Прием входящих переводов, защищенных кодом протекции, если вы передали в метод send параметр protect Количество попыток приема входящего перевода с кодом протекции ограничено. При исчерпании количества попыток, перевод автоматически отвергается (перевод возвращается отправителю). Более подробная документация: https://yoomoney.ru/docs/wallet/process-payments/incoming-transfer-accept

Parameters
  • operation_id – Идентификатор операции, значение параметра operation_id ответа метода history()

  • protection_code – Код протекции. Строка из 4-х десятичных цифр. Указывается для входящего перевода, защищенного кодом протекции. Для переводов до востребования отсутствует.

async reject_transaction(operation_id: str) Dict[str, str][source]
Отмена входящих переводов, защищенных кодом протекции, если вы передали

в метод send параметр protect,

и переводов до востребования.

При отмене перевода он возвращается отправителю.

Требуемые права токена: incoming-transfers

Более подробная документация: https://yoomoney.ru/docs/wallet/process-payments/incoming-transfer-reject

Parameters

operation_id – Идентификатор операции, значение параметра operation_id ответа метода history().

Returns

словарь в json формате с ответом от апи

async check_transaction(amount: Union[int, float], transaction_type: str = 'in', comment: Optional[str] = None, rows_num: int = 100, recipient: Optional[str] = None) bool[source]

Метод для проверки транзакции.

Данный метод использует self.transactions(rows_num=rows_num)

для получения платежей.

Для небольшой оптимизации вы можете уменьшить rows_num задав его, однако это не гарантирует правильный результат

Parameters
  • amount – сумма платежа

  • transaction_type – тип платежа

  • recipient – номер получателя

  • rows_num – кол-во платежей, которое будет проверяться

  • comment – комментарий, по которому будет проверяться транзакция

Returns

bool, есть ли такая транзакция в истории платежей

class glQiwiApi.QiwiMaps(*args, **kwargs)[source]

API Карты терминалов QIWI позволяет установить местонахождение терминалов QIWI на территории РФ

async terminals(polygon: glQiwiApi.types.qiwi_types.polygon.Polygon, zoom: Optional[int] = None, pop_if_inactive_x_mins: int = 30, include_partners: Optional[bool] = None, partners_ids: Optional[list] = None, cache_terminals: Optional[bool] = None, card_terminals: Optional[bool] = None, identification_types: Optional[int] = None, terminal_groups: Optional[list] = None) List[glQiwiApi.types.qiwi_types.terminal.Terminal][source]

Get map of terminals sent for passed polygon with additional params

Parameters
  • polygon – glQiwiApi.types.Polygon object

  • zoomhttps://tech.yandex.ru/maps/doc/staticapi/1.x/dg/concepts/map_scale-docpage/

  • pop_if_inactive_x_mins – do not show if terminal was inactive for X minutes default 0.5 hours

  • include_partners – result will include/exclude partner terminals

  • partners_ids – Not fixed IDS array look at docs

  • cache_terminals – result will include or exclude cache-acceptable terminals

  • card_terminals – result will include or exclude card-acceptable terminals

  • identification_types0 - not identified, 1 - partly identified, 2 - fully identified

  • terminal_groups – look at QiwiMaps.partners

Returns

list of Terminal instances

async partners() List[glQiwiApi.types.qiwi_types.partner.Partner][source]

Get terminal partners for ttpGroups :return: list of TTPGroups

Qiwi Webhooks

glQiwiApi.core.web_hooks.filter.special_comparator(func1: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]], func2: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]], event: Any) Any[source]

custom a & b (and) operator

glQiwiApi.core.web_hooks.filter.xor(func1: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]], func2: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]], event: Any) Any[source]

custom a ^ b (xor) operator

glQiwiApi.core.web_hooks.filter.or_(func1: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]], func2: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]], event: Any) Any[source]

Custom a | b (or) operator

class glQiwiApi.core.web_hooks.filter.Filter(function: Callable[[glQiwiApi.core.web_hooks.config.E], Union[Awaitable[bool], bool]])[source]

Base Filter object, callback container

class glQiwiApi.core.web_hooks.server.QiwiWalletWebView(request: None)[source]

View, which processes transactions

async parse_update() glQiwiApi.types.qiwi_types.webhooks.WebHook[source]

Deserialize update and create new update class :return: updated.QiwiUpdate

async post() aiohttp.web_response.Response[source]

Process POST request with basic IP validation.

class glQiwiApi.core.web_hooks.server.QiwiBillWebView(request: None)[source]

View, which processes p2p notifications

async parse_update() glQiwiApi.types.qiwi_types.bill.Notification[source]

parse_update method that deals with marshaling json

async post() aiohttp.web_response.Response[source]

Process POST request with basic IP validation.

glQiwiApi.core.web_hooks.server.setup(dispatcher: glQiwiApi.core.web_hooks.dispatcher.Dispatcher, app: aiohttp.web_app.Application, host: str, path: Optional[glQiwiApi.core.web_hooks.config.Path] = None, secret_key: Optional[str] = None, base64_key: Optional[str] = None, tg_app: Optional[glQiwiApi.core.builtin.telegram.BaseProxy] = None) None[source]

Entirely configures the web app for webhooks

Parameters
  • dispatcher – dispatcher, which processing events

  • app – aiohttp.web.Application

  • host

  • path – Path obj, contains two paths

  • secret_key – secret p2p key

  • base64_key – Base64-encoded webhook key

  • tg_app

Polling

Managing polling and webhooks

glQiwiApi.utils.executor.start_webhook(client: QiwiWrapper, *, host: str = 'localhost', port: int = 8080, path: Optional[Path] = None, on_startup: Optional[Callable[[QiwiWrapper], Awaitable[None]]] = None, on_shutdown: Optional[Callable[[QiwiWrapper], Awaitable[None]]] = None, tg_app: Optional[BaseProxy] = None, app: Optional[‘web.Application’] = None)[source]

Blocking function that listens for webhooks

Parameters
  • client

  • host – server host

  • port – server port that open for tcp/ip trans.

  • path – path for qiwi that will send requests

  • app – pass web.Application

  • on_startup – coroutine,which will be executed on startup

  • on_shutdown – coroutine, which will be executed on shutdown

  • tg_app – builtin TelegramWebhookProxy or other or class, that inherits from BaseProxy and deal with aiogram updates

glQiwiApi.utils.executor.start_polling(client: QiwiWrapper, *, get_updates_from: datetime = datetime.datetime(2021, 7, 26, 8, 14, 8, 905991), timeout: Union[float, int, ClientTimeout] = 5, on_startup: Optional[Callable[[QiwiWrapper], Any]] = None, on_shutdown: Optional[Callable[[QiwiWrapper], Any]] = None, tg_app: Optional[BaseProxy] = None)[source]

Setup for long-polling mode

Parameters
  • client

  • get_updates_from – date from which will be polling, if it’s None, polling will skip all updates

  • timeout – timeout of polling in seconds, if the timeout is too small, the API can throw an exception

  • on_startup – function or coroutine, which will be executed on startup

  • on_shutdown – function or coroutine, which will be executed on shutdown

  • tg_app – builtin TelegramPollingProxy or other class, that inherits from BaseProxy, deal with aiogram updates

Low level API

class glQiwiApi.core.basic_requests_api.HttpXParser(proxy: Optional[Union[Iterable[Union[str, Tuple[str, aiohttp.helpers.BasicAuth]]], str, Tuple[str, aiohttp.helpers.BasicAuth]]] = None, messages: Optional[Dict[str, str]] = None)[source]

Aiohttp wrapper, implements the method of sending a request

fetch(*, times: int = 1, **kwargs) AsyncGenerator[Union[glQiwiApi.types.particular.Response, glQiwiApi.types.basics.Cached], None][source]

Basic usage:

parser = HttpXParser()

async for response in parser.fetch():

print(response)

Parameters
  • times – quantity requests

  • kwargs – HttpXParser._request kwargs

Returns

fast() glQiwiApi.core.basic_requests_api.HttpXParser[source]

Method to fetching faster with using faster event loop(uvloop)

USE IT ONLY ON LINUX SYSTEMS, on Windows or Mac its dont give performance!

Returns

async create_session(**kwargs) aiohttp.client.ClientSession[source]

Creating new session if old was close or it’s None

async close() None[source]

close aiohttp session

make_exception(status_code: int, traceback_info: Optional[Union[aiohttp.client_reqrep.RequestInfo, dict, str, bytes]] = None, message: Optional[str] = None) glQiwiApi.utils.exceptions.RequestError[source]

Raise RequestError exception with pretty explanation

class glQiwiApi.core.aiohttp_custom_api.RequestManager(without_context: bool = False, messages: Optional[Dict[str, str]] = None, cache_time: Union[float, int] = 0, proxy: Optional[Union[Iterable[Union[str, Tuple[str, aiohttp.helpers.BasicAuth]]], str, Tuple[str, aiohttp.helpers.BasicAuth]]] = None)[source]

Deal with Storage, caching queries and managing stable work of sending requests

reset_cache() None[source]

Clear all cache in storage

async make_request(**kwargs) Union[glQiwiApi.types.particular.Response, glQiwiApi.types.basics.Cached][source]

The user-friendly method that allows sending requests to any URL

async close() None[source]

Close aiohttp session and reset cache data

classmethod filter_dict(dictionary: dict) dict[source]

Pop NoneType values and convert everything to str, designed?for=params

Parameters

dictionary – source dict

Returns

filtered dict

class glQiwiApi.core.storage.Storage(*, cache_time: Union[float, int])[source]

Deal with cache and data. Easy to use

>>> storage = Storage(cache_time=5)
>>> storage["hello_world"] = 5
>>> print(storage["hello_world"])  # print 5
Parameters

cache_time – Время кэширования в секундах

clear(key: Optional[str] = None, *, force: bool = False) Any[source]

Method to delete element from the cache by key, or if force passed on its clear all data from the cache

Parameters
  • key – by this key to delete an element in storage

  • force – If this argument is passed as True, the date in the storage will be completely cleared.

convert_to_cache(result: Any, kwargs: dict, status_code: Union[str, int]) glQiwiApi.types.basics.Cached[source]

Method, which convert response of API to Cached

Parameters
  • result – response data

  • kwargs – key/value of request payload data

  • status_code – status_code answer

update_data(obj_to_cache: Any, key: Any) None[source]

Метод, который добавляет результат запроса в кэш.

>>> storage = Storage(cache_time=5)
>>> storage.update_data(obj_to_cache="hello world", key="world")
>>> storage["world"] = "hello_world"  # This approach is in priority and
...                                   # the same as on the line of code above
Parameters
  • obj_to_cache – объект для кэширования

  • key – ключ, по которому будет зарезервирован этот кэш

validate(**kwargs) bool[source]

Метод, который по некоторым условиям проверяет актуальность кэша и в некоторых случая его чистит.

Parameters

kwargs

Returns

boolean, прошел ли кэшированный запрос валидацию

Aiogram integration

class glQiwiApi.core.builtin.telegram.TelegramWebhookProxy(dispatcher: Dispatcher, sub_apps: typing.Optional[SubApps] = None)[source]

Managing loading webhooks of aiogram together with QiwiWrapper

Parameters
  • dispatcher – instance of aiogram class Dispatcher

  • sub_apps – list of tuples(prefix as string, web.Application)

execution_path: str = '/bot/{token}'

You can override this parameter to change the default route path

prefix: str = '/tg/webhooks'

You can override the prefix for the application

setup(**kwargs) aiohttp.web_app.Application[source]

A method that connects the main application, and the proxy in the form of a telegram

Parameters

kwargs – keyword arguments, which contains application and host

async configure_webhook(host: str, **kwargs) Any[source]

You can override this method to correctly setup webhooks with aiogram API method set_webhook like this: self.dispatcher.bot.set_webhook()

class glQiwiApi.core.builtin.telegram.TelegramPollingProxy(dispatcher: Dispatcher, loop: typing.Optional[AbstractEventLoop] = None, timeout: int = 20, relax: float = 0.1, limit=None, reset_webhook=None, fast: typing.Optional[bool] = True, error_sleep: int = 5, allowed_updates: typing.Optional[typing.List[str]] = None)[source]

Builtin telegram proxy. Allows you to use Telegram and QIWI webhooks together

setup(**kwargs: Any)[source]

Set up polling to run polling qiwi updates concurrently with aiogram

Parameters

kwargs – you can pass on loop as key/value parameter

class glQiwiApi.core.builtin.telegram.BaseProxy(dispatcher: Dispatcher, *, loop: typing.Optional[AbstractEventLoop] = None)[source]
abstract setup(**kwargs: Any) Any[source]

This method should establish the necessary for work

Synchronous adapter

glQiwiApi.utils.basics._await_sync(future)[source]

synchronously waits for a task

glQiwiApi.utils.basics.sync(func, *args, **kwargs)[source]

Function to execute async functions synchronously

Parameters
  • func – Async function, which you want to execute in synchronous code

  • args – args, which need your async func

  • kwargs – kwargs, which need your async func

Exceptions

exception glQiwiApi.utils.exceptions.InvalidData[source]

Ошибка возникает если были переданы или получены невалидные данные

exception glQiwiApi.utils.exceptions.NoUrlFound[source]

Данная ошибка возникает при неправильной авторизации yoomoney

exception glQiwiApi.utils.exceptions.RequestAuthError[source]

Ошибка при неправильной аутентификации POST or GET data

exception glQiwiApi.utils.exceptions.RequestProxyError[source]

Возникает, если были переданы неправильные параметры запроса

exception glQiwiApi.utils.exceptions.InvalidCardNumber[source]

Ошибка, при передаче номера карты в неправильном формате

exception glQiwiApi.utils.exceptions.InvalidToken[source]

Ошибка, возникающая, если был передан неверный токен

exception glQiwiApi.utils.exceptions.RequestError(message: Optional[str], status_code: Union[str, int], additional_info: Optional[str] = None, traceback_info: Optional[Union[aiohttp.client_reqrep.RequestInfo, dict, str, bytes]] = None)[source]

Возникает при ошибках сервиса или неправильной передаче параметров

to_model() glQiwiApi.utils.exceptions.ExceptionTraceback[source]

Convert exception to ExceptionTraceback

json(indent: int = 4, **dump_kw) str[source]

Method, that makes json format from traceback

Parameters
  • indent

  • dump_kw

exception glQiwiApi.utils.exceptions.NoUpdatesToExecute[source]

Ошибка возбуждается если при полинге нет транзакций, чтобы обрабатывать