Files
pay-service/src/presentation/schemas/order.py
2026-06-21 14:16:20 +03:00

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