payment.py 1003 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from pydantic import BaseModel
  2. from typing import Optional, Literal
  3. from datetime import datetime
  4. class VasPaymentBase(BaseModel):
  5. status: Optional[Literal['pending', 'succeeded', 'failed', 'expired', 'late_paid']] = None
  6. qr_id: Optional[int] = None
  7. payment_url: Optional[str] = None
  8. expire_at: Optional[datetime] = None
  9. provider_payload: Optional[dict] = None
  10. class VasPaymentCreate(BaseModel):
  11. order_id: str
  12. provider: Literal['stripe', 'wechat', 'alipay']
  13. class VasPaymentUpdate(VasPaymentBase):
  14. pass
  15. class VasPaymentOut(VasPaymentBase):
  16. id: int
  17. order_id: str
  18. provider: str
  19. channel: str
  20. payment_intent_id: Optional[str]
  21. external_trade_no: Optional[str]
  22. base_amount: int
  23. base_currency: str
  24. amount: int
  25. currency: str
  26. random_offset: int
  27. exchange_rate: float # 注意:仅用于展示,DB 里是 DECIMAL
  28. created_at: datetime
  29. updated_at: datetime
  30. class Config:
  31. orm_mode = True