Payment providers (QIWI) API wrapper
Project description
PyPayment
pypayment - Payment providers API wrapper.
Available providers:
Installation
Install the current version with PyPI
pip install -U pypayment
Usage
The module provides an interface Payment
for the unification of each payment provider.
It has 2 properties:
url
- Link to the created payment form.status
- Current payment status.
from pypayment import Payment
Qiwi
Authorization
Before using QiwiPayment
class you must authorize with secret key from QIWI P2P.
from pypayment import QiwiPayment
QiwiPayment.authorize("my_secret_key")
You can set default parameters for every QiwiPayment
instance.
theme_code
- Code for displaying custom name and colors of the form. (Get it here)expiration_duration
- Time that the invoice will be available for payment.payment_type
- [QiwiPaymentType](#Qiwi Payment Types) enum.
from pypayment import QiwiPayment, QiwiPaymentType
from datetime import timedelta
QiwiPayment.authorize("my_secret_key",
theme_code="my_theme_code",
expiration_duration=timedelta(hours=1),
payment_type=QiwiPaymentType.CARD)
Creating invoice
To created new QIWI invoice, you need to instantiate QiwiPayment
with 1 required parameter.
amount
- The amount to be invoiced. (will be rounded to 2 decimal places)
from pypayment import Payment, QiwiPayment
payment: Payment = QiwiPayment(amount=123.45)
print(payment.url) # https://oplata.qiwi.com/form/?invoice_uid=payment_unique_id
And 4 optional parameters that will override default ones for specific instance.
description
- Payment comment that will be displayed to user.theme_code
- Code for displaying custom name and colors of the form. (Get it here)expiration_duration
- Time that the invoice will be available for payment.payment_type
- [QiwiPaymentType](#Qiwi Payment Types) enum.
from pypayment import Payment, QiwiPayment, QiwiPaymentType
from datetime import timedelta
different_payment: Payment = QiwiPayment(amount=987.65,
description="Flower pot",
theme_code="my_new_theme_code",
expiration_duration=timedelta(days=3),
payment_type=QiwiPaymentType.CARD)
print(different_payment.url) # https://oplata.qiwi.com/form/?invoice_uid=payment_unique_id_2
Recommended to put QiwiPayment
into Payment
variable to keep unification.
Getting status
To get payment [status](#Payment Statuses), you need to use status
property.
from pypayment import Payment, QiwiPayment, PaymentStatus
payment: Payment = QiwiPayment(100)
if payment.status == PaymentStatus.PAID:
print("Got ur money!") # Got ur money!
Qiwi Payment Types
Enum QiwiPaymentType
that represents every possible Qiwi payment type.
WALLET
- Payment with Qiwi wallet.CARD
- Payment with bank card.ALL
- Payment with every type possible.
YooMoney
Getting access token
You need to get access_token
to authorize.
client_id
- Create new application and copy client_id (Do it here)redirect_uri
- redirect_uri you specified when creating the application.instance_name
- (Optional) ID of the authorization instance in the application.
from pypayment import YooMoneyPayment
YooMoneyPayment.get_access_token(client_id="my_client_id",
redirect_uri="my_redirect_uri",
instance_name="my_instance_name") # access_token = XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Authorization
Before using YooMoneyPayment
class you must authorize with [access_token](#Getting access token).
from pypayment import YooMoneyPayment
YooMoneyPayment.authorize("my_access_token")
You can set default parameters for every YooMoneyPayment
instance.
payment_type
- [YooMoney Payment Type](#YooMoney Payment Types) enum.charge_commission
- [Charge Commission](#Charge Commission) enum.success_url
- User will be redirected to this url after paying.
from pypayment import YooMoneyPayment, YooMoneyPaymentType, ChargeCommission
YooMoneyPayment.authorize("my_access_token",
payment_type=YooMoneyPaymentType.CARD,
charge_commission=ChargeCommission.FROM_CUSTOMER,
success_url="my_success_url.com")
Creating invoice
To created new YooMoney invoice, you need to instantiate YooMoneyPayment
with 1 required parameter.
amount
- The amount to be invoiced. (will be rounded to 2 decimal places)
from pypayment import Payment, YooMoneyPayment
payment: Payment = YooMoneyPayment(amount=123.45)
print(payment.url) # https://yoomoney.ru/transfer/quickpay?requestId=XXXXXXXXXXXXXXXXXXXXXXXXXX
And 3 optional parameters that will override default ones for specific instance.
description
- Payment comment that will be displayed to user.payment_type
- [YooMoney Payment Type](#YooMoney Payment Types) enum.charge_commission
- [Charge Commission](#Charge Commission) enum.success_url
- User will be redirected to this url after paying.
from pypayment import Payment, YooMoneyPayment, YooMoneyPaymentType, ChargeCommission
different_payment: Payment = YooMoneyPayment(amount=987.65,
description="Flower pot",
payment_type=YooMoneyPaymentType.CARD,
charge_commission=ChargeCommission.FROM_CUSTOMER,
success_url="my_success_url.com")
print(different_payment.url) # https://yoomoney.ru/transfer/quickpay?requestId=XXXXXXXXXXXXXXXXXXXXXXXXXX
Recommended to put YooMoneyPayment
into Payment
variable to keep unification.
Getting status
To get payment [status](#Payment Statuses), you need to use status
property.
from pypayment import Payment, YooMoneyPayment, PaymentStatus
payment: Payment = YooMoneyPayment(100)
if payment.status == PaymentStatus.PAID:
print("Got ur money!") # Got ur money!
YooMoney Payment Types
Enum YooMoneyPaymentType
that represents every possible yoomoney payment type.
WALLET
- Payment with YooMoney wallet.CARD
- Payment with bank card.PHONE
- Payment from phone balance.
Charge Commission
Enum ChargeCommission
that represents who will be charged the commission (YooMoney commission).
FROM_CUSTOMER
- Charge commission from customer.FROM_SELLER
- Charge commission from seller.
Payment Statuses
Enum that represents every possible status of the invoice.
WAITING
- Payment has been created, but has not yet been paid.PAID
- Payment was successfully paid.REJECTED
- Payment was rejected.EXPIRED
- Payment has expired.
Exceptions
NotAuthorized
- Raised when payment provider class has not been authorized.AuthorizationError
- Raised when authorization failed.PaymentCreationError
- Raised when payment creation failed.PaymentGettingError
- Raised when payment getting failed.
Contributing
Bug reports and/or pull requests are welcome
License
The module is available as open source under the terms of the Apache License, Version 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pypayment-1.1.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c897d07ecf1604fdc1fe6aae8e1463790db34593d744b58c80ebe0b79fc71107 |
|
MD5 | 2ebca5c44d6cdd7c62fdcd6e01a3f60e |
|
BLAKE2b-256 | f7a70fc72f5fbddcd924072a948ba76ead872277b1e791f0f05b177431a42207 |