Giter Club home page Giter Club logo

qiwi-p2p-api's Introduction

RIP QIWI 2007-2024

Так как КИВИ больше не работают в России, я больше не буду обновлять эту библиотеку. Я удалил метод, который был доступен только в рублях. Если оплата через ссылку теперь доступна и в Тенге, вы можете использовать версию в соседней ветке.

qiwi-p2p-api

Простое Python SDK для p2p Qiwi API Параметры функций, кроме lifetime в оплате через форму, идентичны параметрам из официальной документации QIWi p2p, но изменены для соответствия PEP. Так billId переименовано в bill_id, а все параметры с *DateTime переименованы в *_datetime

Альтернативы

Установка

  1. Скачать этот репозиторий
  2. Распаковать в папке, где находится исполняемый скрипт или в папке с модулями (что-то вроде $PYTHONPATH$\Lib\site-packages)
  3. pip install -r requirements.txt

Блокировка кошелька из-за referer

QIWI требует, чтобы при переходе по ссылке указывался referer. Если вы передаёте ссылки через мессенджеры или соцсети, вероятнее всего, этот параметр будет указан (по крайней мере, оф. приложения VK и Telegram однозначно оставляют его). Подробнее можете почитать тут.

Пример

Создание счёта и печать ссылки на него

from qiwip2py import QiwiP2P
from datetime import timedelta

qiwi_p2p = QiwiP2P(secret_key=SECRET_KEY)
bill = qiwi_p2p.create_bill(bill_id='test', amount=1.99, custom_fields={'themeCode': THEME_CODE},
                            expiration_datetime=timedelta(hours=3))
print(bill.pay_url)

Проверка существования счёта

bill = qiwi_p2p.get_bill('test')
if bill:
    print(f'Счёт на {bill.amount_value} {bill.amount["currency"]} существует')
else:
    print('Счета не существует')

QiwiP2P

При создании можно не задавать какой-то из ключей, если его использование не планируется, однако, при использовании метода, для которого этот ключ нужен, будет возвращено Assertion Error или AttributeError, если секретный ключ неверен. Во всех случаях, кроме оплаты через форму, используется секретный ключ.

Во все методы можно передать иные именованные аргументы, вроде proxy, и те передадутся в requests.request

Таблица параметров и соответствия с Qiwi p2p

Параметр Через API Через форму Описание
bill_id передаётся в url billId Уникальный идентификатор выставляемого счета в вашей системе
amount amount.value amount Сумма, на которую выставляется счет, округленная в меньшую сторону до 2 десятичных знаков
amount_currency amount.currency недоступно. Только через RUB Валюта суммы счета. Возможные значения: RUB - рубли (по умолчанию), KZT - тенге
phone customer.phone phone Номер телефона пользователя (в международном формате)
email customer.email email E-mail пользователя
account customer.account account Идентификатор пользователя в вашей системе
comment comment comment Комментарий к счету (Виден пользователю при оплате)
expiration_datetime expirationDateTime lifetime datetime.timedelta промежуток, который доступен счёт
custom_fields customFields customFields dict с дополнительными полями (themeCode, paySourcesFilter, свои поля)
success_url недоступно successUrl URL для переадресации в случае успешного перевода
return_pay_link - - Если True, возвращает строку с ссылкой на форму, вместо создания счёта и возвращения Bill

get_bill

  • bill_id: str Возвращает данные по счёту с bill_id (См. Возвращаемые объекты)

reject_bill

  • bill_id: str Отменяет счёт с bill_id и возвращает данные по нему (См. Возвращаемые объекты)

Возвращаемые объекты

Все методы, кроме create_bill(return_pay_link=True) возвращают один из этих двух объектов, кроме случаев с неуказанным или неверным секретным ключом:

Bill

Объект с данными о счёте

bool(Bill) == True

Атрибут QIWI Тип Описание
site_id siteId str siteId
bill_id billId
amount amount dict Данные о сумме счета
amount_value amount.value float Сумма счета
status status dict Данные о статусе счета
status_value status.value str: 'WAITING', 'PAID', 'REJECTED' или 'EXPIRED' Статус счёта
costumer customer dict Идентификаторы пользователя
custom_fields customFields dict строковые данные, переданные вами
comment comment str Комментарий к счёту
creation_datetime creationDateTime datetime.datetime Системная дата создания счета
expiration_datetime expirationDateTime datetime.datetime Срок действия созданной формы для перевода
pay_url payUrl str Ссылка для переадресации пользователя на созданную форму
json - dict Преобразованный в dict json из ответа Qiwi

ErrorResponse

Объект, возвращаемый при коде, отличном от 200

bool(ErrorResponse) == False

  • status_code: status_code: int - код ошибки
  • json: dict - Преобразованный в dict json из ответа Qiwi
  • service_name
  • error_code
  • description
  • user_message
  • datetime
  • trace_id

Обратная связь

Если вы почему-то столкнулись с какими-то проблемами, но почему-то не хотите открыть issues или же просто желаете что-то написать, можете достать меня в telegram или VK

qiwi-p2p-api's People

Contributors

urmipie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.