schema.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from datetime import datetime
  2. from enum import Enum
  3. from pydantic import BaseModel, Field, field_validator
  4. from typing import Optional, NamedTuple
  5. AlipayResponseCode = NamedTuple("AlipayResponseCode", [("code", str), ("msg", str)])
  6. class AlipayResponseCodeEnum(Enum):
  7. """支付宝响应码枚举"""
  8. SUCCESS = AlipayResponseCode("10000", "接口调用成功")
  9. SERVICE_UNAVAILABLE = AlipayResponseCode("20000", "服务不可用")
  10. AUTH_INSUFFICIENT = AlipayResponseCode("20001", "授权权限不足")
  11. MISSING_REQUIRED_PARAM = AlipayResponseCode("40001", "缺少必选参数")
  12. INVALID_PARAM = AlipayResponseCode("40002", "非法的参数")
  13. CONDITION_ABNORMAL = AlipayResponseCode("40003", "条件异常")
  14. SERVICE_NOT_EXIST = AlipayResponseCode("40004", "服务不存在")
  15. METHOD_NOT_SUPPORTED = AlipayResponseCode("40005", "不支持请求方式")
  16. PERMISSION_DENIED = AlipayResponseCode("40006", "权限不足")
  17. @classmethod
  18. def from_code(cls, code: str) -> AlipayResponseCode:
  19. for item in cls:
  20. if item.value.code == code:
  21. return item.value
  22. return AlipayResponseCode(code, "未知错误")
  23. # class AlipayResponse(BaseModel):
  24. # """支付宝响应基础模型"""
  25. # code: str = Field(..., description="网关返回码,10000表示成功")
  26. # msg: str = Field(..., description="网关返回码描述")
  27. # sub_code: Optional[str] = Field(None, description="业务错误码,业务失败时返回")
  28. # sub_msg: Optional[str] = Field(None, description="业务错误描述,业务失败时返回")
  29. # @property
  30. # def success(self) -> bool:
  31. # return self.code == AlipayResponseCodeEnum.SUCCESS.value.code
  32. # class AlipayCommerceEcEnterpriseRegisterInviteCreateResponse(AlipayResponse):
  33. # """邀请企业注册响应"""
  34. # pc_invite_url: Optional[str] = Field(None, description="企业注册/认证/签约三合一页面的链接地址")
  35. # expire_time: Optional[datetime] = Field(None, description="链接过期时间,格式:yyyy-MM-dd HH:mm:ss")
  36. # @field_validator("expire_time", mode="before")
  37. # @classmethod
  38. # def parse_expire_time(cls, v: Optional[str]) -> Optional[datetime]:
  39. # if v is None:
  40. # return None
  41. # return datetime.strptime(v, "%Y-%m-%d %H:%M:%S")