Files
life-echo/api/app/features/payment/payment_exceptions.py
Sully 53e0065e3e refactor(api): TOML 配置 SSOT、统一错误契约、Auth/事务加固与可观测性 (#33)
配置 SSOT(TOML + .env)
统一错误契约
Auth 与事务边界
Redis / Celery 可靠性:业务 Redis(DB/0)与 Celery broker/backend(DB/1)显式拆分;连接池、sync client
可观测性(OpenTelemetry + LGTM)
2026-05-22 13:44:50 +08:00

39 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""支付模块异常定义(继承 AppError由全局 handler 统一映射)。"""
from app.core.errors import AppError
_PAYMENT_CODE_MAP: dict[str, tuple[int, str]] = {
"PAYMENT_CONFIG_ERROR": (502, "PROVIDER_ERROR"),
"PAYMENT_CREATE_ERROR": (502, "PROVIDER_ERROR"),
"PAYMENT_NOTIFY_ERROR": (400, "BAD_REQUEST"),
"PAYMENT_QUERY_ERROR": (502, "PROVIDER_ERROR"),
"PAYMENT_ERROR": (400, "BAD_REQUEST"),
}
class PaymentError(AppError):
def __init__(self, message: str = "支付异常", code: str = "PAYMENT_ERROR"):
status_code, error_code = _PAYMENT_CODE_MAP.get(code, (400, code))
super().__init__(message, status_code=status_code, error_code=error_code)
self.code = code
class PaymentConfigError(PaymentError):
def __init__(self, message: str = "支付配置错误"):
super().__init__(message=message, code="PAYMENT_CONFIG_ERROR")
class PaymentCreateError(PaymentError):
def __init__(self, message: str = "创建支付订单失败"):
super().__init__(message=message, code="PAYMENT_CREATE_ERROR")
class PaymentNotifyError(PaymentError):
def __init__(self, message: str = "支付回调处理失败"):
super().__init__(message=message, code="PAYMENT_NOTIFY_ERROR")
class PaymentQueryError(PaymentError):
def __init__(self, message: str = "查询支付状态失败"):
super().__init__(message=message, code="PAYMENT_QUERY_ERROR")