payment.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from sqlalchemy import Column, Integer, String, Text, DateTime, Enum, JSON, DECIMAL
  2. from datetime import datetime
  3. from app.core.database import Base
  4. class VasPayment(Base):
  5. __tablename__ = "vas_payment"
  6. id = Column(Integer, primary_key=True, autoincrement=True)
  7. order_id = Column(String(128), nullable=False)
  8. provider = Column(Enum('stripe','wechat','alipay'), nullable=False)
  9. channel = Column(String(50), nullable=False)
  10. payment_intent_id = Column(String(255))
  11. external_trade_no = Column(String(255))
  12. status = Column(
  13. Enum('pending','succeeded','failed','expired', 'late_paid'),
  14. default='pending'
  15. )
  16. base_amount = Column(Integer, nullable=False)
  17. base_currency = Column(String(10), nullable=False)
  18. amount = Column(Integer, nullable=False)
  19. currency = Column(String(10), nullable=False)
  20. random_offset = Column(Integer, nullable=False)
  21. exchange_rate = Column(DECIMAL(18, 8), nullable=False)
  22. qr_id = Column(Integer)
  23. payment_url = Column(Text)
  24. expire_at = Column(DateTime)
  25. provider_payload = Column(JSON)
  26. created_at = Column(DateTime, default=datetime.utcnow)
  27. updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)