159 lines
4.3 KiB
Python
159 lines
4.3 KiB
Python
from decimal import Decimal
|
|
from pydantic import BaseModel,Field
|
|
from src.application.domain.enums import OrderStatus,PaymentStatus,SbpWithdrawalStatus
|
|
|
|
|
|
class CreateOrder(BaseModel):
|
|
usdt_amount: Decimal = Field(gt=0, decimal_places=2, max_digits=20)
|
|
usdt_exchange_rate: Decimal = Field(gt=0, decimal_places=2, max_digits=20)
|
|
gas_fee: Decimal = Field(gt=0, decimal_places=2, max_digits=20)
|
|
total_price: Decimal = Field(gt=0, decimal_places=2, max_digits=20)
|
|
|
|
|
|
class OrderPaymentResponse(BaseModel):
|
|
id: str | None = None
|
|
created_at: str | None = None
|
|
updated_at: str | None = None
|
|
user_id: str | None = None
|
|
usdt_amount: str | None = None
|
|
usdt_exchange_rate: str | None = None
|
|
gas_fee: str | None = None
|
|
total_price: str | None = None
|
|
service_fee: str | None = None
|
|
status: OrderStatus | None = None
|
|
client_payment_id: str | None = None
|
|
itpay_payment_qr_url_desktop: str | None = None
|
|
itpay_payment_qr_url_android: str | None = None
|
|
itpay_payment_qr_url_ios: str | None = None
|
|
itpay_payment_qr_image_desktop: str | None = None
|
|
itpay_payment_qr_image_android: str | None = None
|
|
itpay_payment_qr_image_ios: str | None = None
|
|
itpay_id: str | None = None
|
|
itpay_qr_id: str | None = None
|
|
itpay_amount: str | None = None
|
|
itpay_created_at: str | None = None
|
|
|
|
|
|
class PaymentResponse(BaseModel):
|
|
id: str | None = None
|
|
created_at: str | None = None
|
|
updated_at: str | None = None
|
|
user_id: str | None = None
|
|
order_id: str | None = None
|
|
status: PaymentStatus | None = None
|
|
receipt_cloudekassir_id: str | None = None
|
|
receipt_cloudekassir_link: str | None = None
|
|
itpay_payment_id: str | None = None
|
|
itpay_paid_amount: str | None = None
|
|
transaction_id: str | None = None
|
|
web3_transaction_hash: str | None = None
|
|
paid_at: str | None = None
|
|
expired_date: str | None = None
|
|
|
|
|
|
class SbpWithdrawalOperationResponse(BaseModel):
|
|
id: str | None = None
|
|
created_at: str | None = None
|
|
updated_at: str | None = None
|
|
user_id: str | None = None
|
|
bank_id: str | None = None
|
|
bank_name: str | None = None
|
|
phone: str | None = None
|
|
wallet_address: str | None = None
|
|
usdt_amount: str | None = None
|
|
rub_amount: str | None = None
|
|
usdt_exchange_rate: str | None = None
|
|
service_fee_rate: str | None = None
|
|
service_fee_usdt: str | None = None
|
|
mozen_order_id: str | None = None
|
|
trace_id: str | None = None
|
|
status: SbpWithdrawalStatus | None = None
|
|
provider_error: str | None = None
|
|
usdt_received_at: str | None = None
|
|
payout_created_at: str | None = None
|
|
payout_completed_at: str | None = None
|
|
|
|
|
|
class ClientOperationResponse(BaseModel):
|
|
type: str
|
|
created_at: str
|
|
payment: PaymentResponse | None = None
|
|
withdrawal: SbpWithdrawalOperationResponse | None = None
|
|
|
|
|
|
class CreateOrderResponse(BaseModel):
|
|
status_code: int
|
|
order: OrderPaymentResponse
|
|
|
|
|
|
class PaymentConfigResponse(BaseModel):
|
|
status_code: int
|
|
usdt_exchange_rate: str
|
|
gas_fee: str
|
|
service_fee_rate: str
|
|
one_usdt_service_fee: str
|
|
one_usdt_total_price: str
|
|
created_at: str
|
|
|
|
|
|
class PaymentQuoteResponse(BaseModel):
|
|
status_code: int
|
|
usdt_amount: str
|
|
usdt_exchange_rate: str
|
|
gas_fee: str
|
|
service_fee: str
|
|
total_price: str
|
|
service_fee_rate: str
|
|
created_at: str
|
|
|
|
|
|
class OrderWithPaymentResponse(BaseModel):
|
|
order: OrderPaymentResponse
|
|
payment: PaymentResponse | None = None
|
|
|
|
|
|
class OrderDetailResponse(OrderWithPaymentResponse):
|
|
status_code: int
|
|
|
|
|
|
class OrdersResponse(BaseModel):
|
|
status_code: int
|
|
orders: list[OrderWithPaymentResponse]
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class PaymentsResponse(BaseModel):
|
|
status_code: int
|
|
payments: list[PaymentResponse]
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class ClientOperationsResponse(BaseModel):
|
|
status_code: int
|
|
operations: list[ClientOperationResponse]
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class PaymentDetailResponse(BaseModel):
|
|
status_code: int
|
|
payment: PaymentResponse
|
|
|
|
|
|
class OrderStatusResponse(BaseModel):
|
|
status_code: int
|
|
order_id: str
|
|
order_status: OrderStatus | None = None
|
|
payment_status: PaymentStatus | None = None
|
|
receipt_cloudekassir_link: str | None = None
|
|
web3_transaction_hash: str | None = None
|
|
updated_at: str | None = None
|
|
|
|
|
|
class ErrorResponse(BaseModel):
|
|
detail: str
|
|
status_code: int
|
|
|