mirror of
https://github.com/yawaflua/Py-SPW.git
synced 2025-12-09 20:09:31 +02:00
- add SpwCardNotFound error to `send_transaction()` - Add balance checker to `send_transactions()` - Made working docstrings - Correction errors in Parameters
84 lines
2.6 KiB
Python
84 lines
2.6 KiB
Python
from pydantic import BaseModel, validator
|
||
import validators
|
||
|
||
from . import errors as err
|
||
|
||
|
||
class Payment(BaseModel):
|
||
"""
|
||
Класс параметров оплаты.
|
||
|
||
:param amount: Сумма которую должен оплатить пользователь.
|
||
:type amount: int
|
||
|
||
:param redirectUrl: Ссылка на которую перенаправит пользователя после успешной оплаты.
|
||
:type redirectUrl: str
|
||
|
||
:param webhookUrl: Ссылка вебхука, туда придет сообщение о успешной оплате.
|
||
:type webhookUrl: str
|
||
|
||
:param data: Полезные данные, которые вы хотите получить в будущем вместе с вебхуком.
|
||
:type data: str
|
||
|
||
:raises BigAmountError: Запрашиваемая сумма слишком большая *(макс. 1728)*
|
||
:raises LengthError: Строка data слишком длинная *(макс. 100)*
|
||
:raises IsNotURLError: Параметр не является URL
|
||
"""
|
||
|
||
amount: int
|
||
redirectUrl: str
|
||
webhookUrl: str
|
||
data: str
|
||
|
||
@validator('amount')
|
||
def _max_amount(cls, value: int):
|
||
if value > 1728:
|
||
raise err.BigAmountError()
|
||
return value
|
||
|
||
@validator('data')
|
||
def _data_size(cls, value):
|
||
if len(value) > 100:
|
||
raise err.LengthError(100)
|
||
return value
|
||
|
||
@validator('redirectUrl', 'webhookUrl')
|
||
def _verify_url(cls, value: str):
|
||
if validators.url(value):
|
||
return value
|
||
raise err.IsNotURLError()
|
||
|
||
|
||
class Transaction(BaseModel):
|
||
"""
|
||
Класс параметров транзакции.
|
||
|
||
:param receiver: Карта получателя транзакции.
|
||
:type receiver: str
|
||
|
||
:param amount: Сумма которую должен оплатить пользователь.
|
||
:type amount: int
|
||
|
||
:param comment: Комментарий к транзакции.
|
||
:type comment: str
|
||
|
||
:raises LengthError: Комментарий к транзакции comment слишком длинный *(макс. 32)*
|
||
:raises IsNotCardError: Неверно указана карта получателя
|
||
"""
|
||
|
||
receiver: str
|
||
amount: int
|
||
comment: str
|
||
|
||
@validator('comment')
|
||
def _comment_size(cls, value: str):
|
||
if len(value) > 32:
|
||
raise err.LengthError(32)
|
||
return value
|
||
|
||
@validator('receiver')
|
||
def _receiver_type(cls, value: str):
|
||
if len(value) != 5 or not value.isnumeric():
|
||
raise err.IsNotCardError(value)
|
||
return value
|