- API-004: Add noqa for factory-pattern auth in user_account routes and payments admin - MDL-003: Add from_attributes to MerchantStoreDetailResponse schema - EXC-003: Suppress broad except in merchant_store_service and admin_subscription_service (intentional fallbacks for optional billing module) - NAM-002: Rename onboarding files to *_service.py suffix and update all imports - JS-001: Add file-level noqa for dev-toolbar.js (console interceptor by design) - JS-005: Add init guards to dashboard.js and customer-detail.js - IMPORT-004: Break circular deps by removing orders from inventory requires and marketplace from orders requires; add IMPORT-002 suppression for lazy cross-imports - MOD-025: Remove unused OnboardingAlreadyCompletedException Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
# app/modules/payments/routes/api/admin.py
|
|
"""
|
|
Admin routes for payments module.
|
|
|
|
Provides routes for:
|
|
- Payment gateway configuration
|
|
- Transaction monitoring
|
|
- Refund management
|
|
"""
|
|
|
|
import logging
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from app.api.deps import require_module_access
|
|
from app.modules.enums import FrontendType
|
|
|
|
router = APIRouter(
|
|
prefix="/payments",
|
|
dependencies=[Depends(require_module_access("payments", FrontendType.ADMIN))],
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@router.get("/gateways") # noqa: API001
|
|
async def list_gateways():
|
|
"""List configured payment gateways."""
|
|
# TODO: Implement gateway listing
|
|
return {
|
|
"gateways": [
|
|
{"code": "stripe", "name": "Stripe", "enabled": True},
|
|
{"code": "paypal", "name": "PayPal", "enabled": False},
|
|
{"code": "bank_transfer", "name": "Bank Transfer", "enabled": True},
|
|
]
|
|
}
|
|
|
|
|
|
@router.get("/transactions") # noqa: API001
|
|
async def list_transactions():
|
|
"""List recent transactions across all gateways."""
|
|
# TODO: Implement transaction listing
|
|
return {"transactions": [], "total": 0}
|
|
|
|
|
|
@router.post("/refunds/{transaction_id}") # noqa: API-004, API001
|
|
async def issue_refund(transaction_id: str, amount: float | None = None):
|
|
"""Issue a refund for a transaction."""
|
|
# TODO: Implement refund logic
|
|
return {
|
|
"status": "pending",
|
|
"transaction_id": transaction_id,
|
|
"refund_amount": amount,
|
|
}
|