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 с разрешениями на следующие действия:
Управление виртуальными картами,
Запрос информации о профиле кошелька,
Просмотр истории платежей,
Проведение платежей без 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
zoom – https://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_types – 0 - not identified, 1 - partly identified, 2 - fully identified
terminal_groups – look at QiwiMaps.partners
- Returns
list of Terminal instances
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
- 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
- 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
- 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
- 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 – ключ, по которому будет зарезервирован этот кэш
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
- 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
Synchronous adapter¶
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]¶
Возникает при ошибках сервиса или неправильной передаче параметров