29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
|
|
from fastapi import Depends
|
|||
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|||
|
|
|
|||
|
|
from app.core.db import get_async_db
|
|||
|
|
from app.features.payment.order_service import PaymentOrderService
|
|||
|
|
from app.features.payment.payment_config import PaymentConfig
|
|||
|
|
from app.features.payment.payment_facade import PaymentService
|
|||
|
|
from app.features.plan.deps import get_plan_service
|
|||
|
|
from app.features.plan.service import PlanService
|
|||
|
|
|
|||
|
|
_payment_service = None
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_payment_service() -> PaymentService:
|
|||
|
|
"""统一支付门面(wechat/alipay),供 PaymentOrderService 与 startup 使用。"""
|
|||
|
|
global _payment_service
|
|||
|
|
if _payment_service is None:
|
|||
|
|
config = PaymentConfig.from_env()
|
|||
|
|
_payment_service = PaymentService(config)
|
|||
|
|
return _payment_service
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_payment_order_service(
|
|||
|
|
db: AsyncSession = Depends(get_async_db),
|
|||
|
|
plan_service: PlanService = Depends(get_plan_service),
|
|||
|
|
) -> PaymentOrderService:
|
|||
|
|
"""Payment order facade: create_order, callbacks, list/status."""
|
|||
|
|
return PaymentOrderService(db=db, plan_service=plan_service)
|