как выставить счет qiwi python
Как выставить счет qiwi python
Штучка для удобной работы с кивишной апишкой платежей
Есть типа документация, но в ней есть и косячки, поэтому, если найдёте таковой, обязательно сообщите мне. Буду искренне рад. Правда. Спасибо.
Миграция с первой версии:
⚠️ Важное уведомление
С июня Qiwi начала блокировать кошельки, если пользователь открыл страницу оплаты «напрямую», тем самым не передав заголовок referer.
Это случается при открытии ссылки:
Страница предоставлена мною, но её можно поднять на своём сервере с помощью docker-контейнера.
А как пользоваться
Есть сам класс QiwiP2P, который обладает тремя инструментами: для выставления, проверки и закрытия платежа (счёта).
А асинхронно могёте?
Могём. Причём примерно так же.
Нет, не всё. Ещё можно настроить кивишные уведомления на свой сервер, для этого придется немного пострадать, но лишь немного.
Внимание! Для работы будет необходим проксирующий сервер (например, Nginx) с доверенным SSL-сертификатом. Да. Подробнее про требования к проксирующему серверу в документации Qiwi
А эта шайтан-машина нужна для захендлирования функций на события. Она не готова самостоятельно контактировать с внешним миром. Пожалей её.
И асинхронный сервер, наверное, у вас есть?
Да есть. Причём хендлить функции можно и асинхронные, и синхронные.
Настройка проксирующего Nginx
Для порта 12345 (как в примерах выше) будет:
В таком случае при генерации ключей API на https://qiwi.com/p2p-admin/transfers/api нужно будет указать https://qiwinotify.domain.com/superSecretQiwiURI в качестве URL для уведомлений
P.S. за неприходящие от Qiwi запросы ответственность не несу, как и за приходящие, кстати, тоже. Если запроса от Qiwi не было, то пишите им в поддержку @qiwi_api_help_bot
About
Library for comfortable work with the API of payment system for individuals QiwiP2P
qiwiBillPaymentsAPI 0.2
pip install qiwiBillPaymentsAPI Copy PIP instructions
Released: Mar 2, 2021
Qiwi Bill Payments API
Navigation
Project links
Statistics
View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery
License: MIT License
Requires: Python >=3.4
Maintainers
Classifiers
Project description
Universal payments API Python SDK
Python SDK модуль для внедрения единого платежного протокола эквайринга и QIWI Кошелька.
Установка и подключение
Установка с помощью pip:
Документация
API P2P-счетов (для физических лиц): https://developer.qiwi.com/ru/p2p-payments API QIWI Кассы (для юридических лиц): https://developer.qiwi.com/ru/bill-payments
Авторизация
Смена PUBLIC_KEY и SECRET_KEY на новый:
Примеры
Платежная форма
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается платежная форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API.
Выставление счета
Информация о счете
Метод getBillInfo возвращает информацию о счете. В параметрах нужно указать идентификатор счета billId внутри вашей системы, в результате будет получен ответ со статусом счета. Подробнее в документации.
Отмена неоплаченного счета
Метод cancelBill отменяет неоплаченный счет. В параметрах нужно указать идентификатор счета billId внутри вашей системы, в результате будет получен ответ с информацией о счете. Подробнее в документации.
Как выставить счет qiwi python
Python Qiwi API Wrapper 2.1 by mostm
See pyQiwi Documentation: pyqiwi.readthedocs.io
class pyqiwi. Wallet ( token, number=None, contract_info=True, auth_info=True, user_info=True ) [исходный код] ¶
Все доступные счета на кошельке. Использовать можно только рублевый Visa QIWI Wallet.
Type: | iterable of Account |
---|
profile ¶
Type: | Profile |
---|
offered_accounts ¶
Доступные счета для создания
Type: | iterable of Account |
---|
balance ( currency=643 ) [исходный код] ¶
Баланс Visa QIWI Кошелька
ValueError – Во всех добавленных вариантах оплаты с указанного Qiwi-кошелька нет информации об балансе и его сумме. Скорее всего это временная ошибка Qiwi API, и вам стоит попробовать позже. Так же, эта ошибка может быть вызвана только-что зарегистрированным Qiwi-кошельком,
либо довольно старым Qiwi-кошельком, которому необходимо изменение пароля.
Получение чека по транзакции, на E-Mail или файл.
. | Прямой возврат ответа от Qiwi API
commission ( pid, recipient, amount ) [исходный код] ¶
Расчет комиссии для платежа
Комиссия для платежа
create_account ( account_alias ) [исходный код] ¶
Создание счета-баланса в Visa QIWI Wallet
Параметры: | account_alias (str) – Псевдоним нового счета. Один из доступных в Wallet.offered_accounts. |
---|---|
Результат: | Был ли успешно создан счет? |
Тип результата: | bool |
history ( rows=20, operation=None, start_date=None, end_date=None, sources=None, next_txn_date=None, next_txn_id=None ) [исходный код] ¶
При превышении доступ к API блокируется на 5 минут.
Данный запрос позволяет отправить данные для упрощенной идентификации своего QIWI кошелька.
Данный метод не тестируется, соответственно я не могу гарантировать того что он будет работать как должен. Вы делаете это на свой страх и риск.
Текущая идентификация пользователя. Параметр внутри отвечающий за подтверждение успешной идентификации: Identity.check
mobile ( account, amount ) [исходный код] ¶
Оплата мобильной связи.
ValueError – В случае, если не удалось определить провайдера.
qiwi_transfer ( account, amount, comment=None ) [исходный код] ¶
Перевод на Qiwi Кошелек
send ( pid, recipient, amount, comment=None, fields=None ) [исходный код] ¶
stat ( start_date=None, end_date=None, operation=None, sources=None ) [исходный код] ¶
Изначально берется статистика с начала месяца
transaction ( txn_id, txn_type ) [исходный код] ¶
Получение транзакции из Qiwi API
pyqiwi. detect_mobile ( phone ) [исходный код] ¶
Определение провайдера мобильного телефона
Параметры: | phone (str) – Номер телефона |
---|---|
Результат: | ID провайдера |
Тип результата: | str |
pyqiwi. generate_form_link ( pid, account, amount, comment, blocked=None, account_type=None ) [исходный код] ¶
Создание автозаполненной платежной формы
Отвечает за вариант перевода при pid=99999 (вариация перевода на Qiwi Кошелек) Варианты: 0 (перевод по номеру телефона, phone), 1 (перевод по «никнейму», nickname),
Комментарий применяется только при переводе на Qiwi Кошелек по номеру (pid==99) Сумма платежа не может быть более 99999 из-за ограничений на один платеж. Тип счета для перевода на Qiwi Кошелек (pid=99999) с возможностью ввода «nickname» выбирается в account_type
Результат: | Ссылка |
---|---|
Тип результата: | str |
Raises: | ValueError – amount>99999 или список blocked неверен |
pyqiwi. get_commission ( token, pid ) [исходный код] ¶
Получение стандартной комиссии
Комиссия для платежа
Types¶
Счет из Visa QIWI Кошелька
Псевдоним пользовательского баланса
Type: | str |
---|
fs_alias ¶
Псевдоним банковского баланса
Название соответствующего счета кошелька
Type: | str |
---|
has_balance ¶
Логический признак реального баланса в системе QIWI Кошелек (не привязанная карта, не счет мобильного телефона и т.д.)
Type: | str |
---|
currency ¶
Код валюты баланса (number-3 ISO-4217).
Type: | AccountType |
---|
balance ¶
Псевдоним пользовательского баланса
Type: | Optional[float] |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. AccountType ( _id, title, obj ) [исходный код] ¶
Сведения о счете из Visa QIWI Кошелька
Кодовое название счета
Type: | str |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. AuthInfo ( bound_email, ip, last_login_date, mobile_pin_info, pass_info, person_id, pin_info, registration_date, obj ) [исходный код] ¶
Профиль пользователя Visa QIWI Кошелька
E-mail, привязанный к кошельку. Если отсутствует, то None
Type: | str/None |
---|
ip ¶
IP-адрес последней пользовательской сессии
Type: | str |
---|
last_login_date ¶
Дата/время последней сессии в QIWI Кошельке
Type: | str |
---|
mobile_pin_info ¶
Данные о PIN-коде мобильного приложения QIWI Кошелька
Type: | MobilePinInfo |
---|
pass_info ¶
Данные о пароле к сайту qiwi.com
Type: | PassInfo |
---|
person_id ¶
Номер кошелька пользователя
Type: | int |
---|
pin_info ¶
Данные о PIN-коде к приложению QIWI Кошелька на QIWI терминалах
Type: | PinInfo |
---|
registration_date ¶
Дата/время регистрации QIWI Кошелька пользователя (через сайт либо мобильное приложение, либо другим способом)
Type: | datetime.datetime |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. Commission ( ranges, obj ) [исходный код] ¶
Массив объектов с граничными условиями комиссий
Type: | list[ CommissionRange ] |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. CommissionRange ( bound, fixed, rate, _min, _max, obj ) [исходный код] ¶
Сумма платежа, начиная с которой применяется условие
Type: | Optional[float/int] |
---|
rate ¶
Комиссия (абсолютный множитель)
Type: | Optional[float/int] |
---|
min ¶
Минимальная сумма комиссии
Type: | Optional[float/int] |
---|
max ¶
Максимальная сумма комиссии
Type: | Optional[float/int] |
---|
fixed ¶
Фиксированная сумма комиссии
Type: | Optional[float/int] |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. ContractInfo ( blocked, contract_id, creation_date, features, identification_info, obj ) [исходный код] ¶
Информация о кошельке пользователя
Логический признак блокировки кошелька
Type: | bool |
---|
contract_id ¶
Номер кошелька пользователя
Type: | int |
---|
creation_date ¶
Дата/время создания QIWI Кошелька пользователя (через сайт либо мобильное приложение, либо при первом пополнении, либо другим способом)
Type: | datetime.datetime |
---|
features ¶
Type: | . |
---|
identification_info ¶
Данные об идентификации пользователя
Type: | list[ IdentificationInfo ] |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. IdentificationInfo ( bank_alias, identification_level, obj ) [исходный код] ¶
Данные об идентификации пользователя
Type: | str |
---|
identification_level ¶
Type: | str |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. Identity ( _id, _type, birth_date, first_name, middle_name, last_name, passport, inn, snils, oms, base_inn, obj ) [исходный код] ¶
Номер кошелька пользователя
Type: | str |
---|
birth_date ¶
Дата рождения пользователя
Type: | str |
---|
first_name ¶
Type: | str |
---|
middle_name ¶
Type: | str |
---|
last_name ¶
Type: | str |
---|
passport ¶
Серия и номер паспорта пользователя
Номер СНИЛС пользователя
Номер полиса ОМС пользователя
Идентификация кошелька выполнена? (Используются варианты предлагаемые документацией Qiwi API)
Type: | bool |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. JsonDeserializable [исходный код] ¶
Субклассы этого класса гарантированно могут быть созданы из json-подобного dict’а или форматированной json строки Все субклассы этого класса должны перезаписывать de_json
Содержит в себе исходные данные от Qiwi API
Type: | . |
---|
static check_json ( json_type ) [исходный код] ¶
Проверяет, json_type или dict или str. Если это dict, возвращает его в исходном виде Иначе, возвращает dict созданный из json.loads(json_type)
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
static decode_date ( date_string: str ) [исходный код] ¶
Декодирует дату из строки вида отправляемого Qiwi API ISO-8601
Результат: | |
---|---|
Тип результата: | datetime.datetime данной строки |
class pyqiwi.types. MobilePinInfo ( mobile_pin_used, last_mobile_pin_change, next_mobile_pin_change, obj ) [исходный код] ¶
Данные о PIN-коде мобильного приложения QIWI Кошелька
Логический признак использования PIN-кода (фактически означает, что мобильное приложение используется)
Type: | bool |
---|
last_mobile_pin_change ¶
Дата/время последнего изменения PIN-кода мобильного приложения QIWI Кошелька
Type: | datetime.datetime |
---|
next_mobile_pin_change ¶
Дата/время следующего (планового) изменения PIN-кода мобильного приложения QIWI Кошелька
Type: | datetime.datetime |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. OnlineCommission ( provider_id, withdraw_sum, enrollment_sum, qw_commission, funding_source_commission, withdraw_to_enrollment_rate, obj ) [исходный код] ¶
Type: | int |
---|
withdraw_sum ¶
Общая сумма платежа
Type: | TransactionSum |
---|
enrollment_sum ¶
Сумма платежа с учетом комиссии
Type: | TransactionSum |
---|
qw_commission ¶
Type: | TransactionSum |
---|
funding_source_commission ¶
Комиссия платежной системы(если Qiwi, то всегда 0)
Type: | TransactionSum |
---|
withdraw_to_enrollment_rate ¶
Type: | float/int |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. PassInfo ( last_pass_change, next_pass_change, password_used, obj ) [исходный код] ¶
Данные о пароле к сайту qiwi.com
Дата/время последнего изменения пароля сайта qiwi.com
Type: | str |
---|
next_pass_change ¶
Дата/время следующего (планового) изменения пароля сайта qiwi.com
Type: | str |
---|
password_used ¶
Логический признак использования пароля (фактически означает, что пользователь заходит на сайт)
Type: | bool |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. Payment ( _id, terms, fields, _sum, transaction, source, comment, obj ) [исходный код] ¶
Данные о принятом платеже
Клиентский ID транзакции (В этой библиотеке, он считается 1000*Unix timestamp)
Type: | str |
---|
fields ¶
Данные о сумме платежа
Type: | str |
---|
comment ¶
Комментарий к платежу
Type: | Optional[str] |
---|
transaction ¶
Данные о транзакции в процессинге
Type: | Payment.Transaction |
---|
class Transaction ( _id, state, obj ) [исходный код] ¶
Данные о транзакции в процессинге
Статус транзакции(в момент написания, только Accepted)
Type: | str |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. PaymentFields [исходный код] ¶
Данный класс представляет из себя хаотичную структуру(но всегда присутствует «account») Судя по документации Qiwi API, создается из исходного поля fields для платежа
Если вы хотите посмотреть исходный вид выданный Qiwi API, используйте str(PaymentFields)
Type: | str |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. PinInfo ( pin_used, obj ) [исходный код] ¶
Данные о PIN-коде к приложению QIWI Кошелька на QIWI терминалах
Логический признак использования PIN-кода (фактически означает, что пользователь заходил в приложение)
Type: | bool |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. Profile ( auth_info, contract_info, user_info, obj ) [исходный код] ¶
Профиль пользователя Visa QIWI Кошелька
Настройки авторизации пользователя
Type: | Optional[ AuthInfo ] |
---|
contract_info ¶
Информация о кошельке пользователя
Type: | Optional[ ContractInfo ] |
---|
user_info ¶
Прочие пользовательские данные
Type: | Optional[ UserInfo ] |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. Statistics ( incoming_total, outgoing_total, obj ) [исходный код] ¶
Данные о входящих платежах (пополнениях), отдельно по каждой валюте
Type: | list[ TransactionSum ] |
---|
outgoing_total ¶
Данные об исходящих платежах, отдельно по каждой валюте
Type: | list[ TransactionSum ] |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. Transaction ( txn_id, person_id, date, error_code, error, status, _type, status_text, trm_txn_id, account, _sum, commission, total, provider, source, comment, currency_rate, features, view, obj ) [исходный код] ¶
ID транзакции в процессинге
Type: | int |
---|
person_id ¶
Дата/время платежа, время московское
Type: | datetime.datetime |
---|
error_code ¶
Код ошибки платежа
Type: | int/float |
---|
error ¶
Type: | str |
---|
status ¶
Type: | str |
---|
status_text ¶
Текстовое описание статуса платежа
Type: | str |
---|
trm_txn_id ¶
Клиентский ID транзакции
Type: | str |
---|
account ¶
Номер счета получателя
Данные о сумме платежа
Type: | TransactionSum |
---|
commission ¶
Данные о комиссии платежа
Данные об общей сумме платежа
Type: | TransactionSum |
---|
provider ¶
Данные о провайдере
Type: | TransactionProvider |
---|
comment ¶
Комментарий к платежу
Type: | str |
---|
currency_rate ¶
Курс конвертации (если применяется в транзакции)
Type: | float/int |
---|
source ¶
Type: | . |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. TransactionProvider ( _id, short_name, long_name, logo_url, description, keys, site_url, obj ) [исходный код] ¶
Данные о провайдере
ID провайдера в процессинге
Type: | int |
---|
short_name ¶
Краткое наименование провайдера
Type: | str |
---|
long_name ¶
Развернутое наименование провайдера
Type: | str |
---|
logo_url ¶
Cсылка на логотип провайдера
Type: | str |
---|
description ¶
Описание провайдера (HTML)
Список ключевых слов
Type: | str |
---|
site_url ¶
Type: | str |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. TransactionSum ( amount, currency, obj ) [исходный код] ¶
Type: | float/int |
---|
currency ¶
Type: | str |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
class pyqiwi.types. UserInfo ( default_pay_currency, default_pay_source, email, first_txn_id, language, operator, phone_hash, promo_enabled, obj ) [исходный код] ¶
Прочие пользовательские данные
Код валюты баланса кошелька по умолчанию (number-3 ISO-4217)
Type: | int |
---|
default_pay_source ¶
Type: | str |
---|
first_txn_id ¶
Номер первой транзакции пользователя после регистрации
Type: | int |
---|
language ¶
Название мобильного оператора номера пользователя
Type: | str |
---|
phone_hash ¶
Type: | . |
---|
promo_enabled ¶
Type: | . |
---|
classmethod de_json ( json_type ) [исходный код] ¶
Возвращает инстанс этого класса из созданного json dict’а или строки Эта функция должна быть перезаписана для каждого субкласса
Результат: | |
---|---|
Тип результата: | Инстанс этого класса из созданного json dict’а или строки |
Exceptions¶
Type: | str |
---|
method_name ¶
Название метода, вызванного при возникновении ошибки
Type: | str |
---|
request ¶
Чистый ответ от сервера, полученный от requests
Type: | requests.Response |
---|
response ¶
Текст выданный Qiwi API, без какой либо обработки
Type: | str |
---|
method ¶
Метод вызванный на сервере Qiwi
Type: | str |
---|
params ¶
Параметры вызванного метода