from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.common.db.session import get_db from app.common.responses.api_response import success_response from app.common.security.deps import require_admin_permission from app.modules.payments.service import PaymentsService from app.modules.wallets.service import WalletService router = APIRouter(prefix="/api/v1/payments", tags=["payments"]) @router.post("/mock-notify") def mock_notify(order_no: str, db: Session = Depends(get_db)): return success_response(WalletService(db).handle_mock_payment(order_no)) @router.get("/mock-pay") def mock_pay(orderNo: str, db: Session = Depends(get_db)): return success_response(WalletService(db).handle_mock_payment(orderNo)) admin_router = APIRouter(prefix="/api/v1/admin/recharge-orders", tags=["admin-payments"]) @admin_router.get("") def list_orders( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PaymentsService(db).list_orders()) @admin_router.get("/{order_id}") def get_order_detail( order_id: int, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PaymentsService(db).get_order_detail(order_id)) @admin_router.post("/{order_id}/repair") def repair_order( order_id: int, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PaymentsService(db).repair_order(order_id))