31 lines
1 KiB
Python
31 lines
1 KiB
Python
from fastapi import APIRouter, Header, HTTPException, Request
|
|
|
|
from app.core.config import get_settings
|
|
from app.core.deps import DbSession
|
|
from app.services.payments.service import process_webhook
|
|
|
|
router = APIRouter(prefix="/webhooks", tags=["webhooks"])
|
|
|
|
|
|
@router.post("/razorpay")
|
|
async def razorpay_webhook(
|
|
request: Request,
|
|
db: DbSession,
|
|
x_razorpay_signature: str | None = Header(default=None, alias="X-Razorpay-Signature"),
|
|
) -> dict:
|
|
body = await request.body()
|
|
return process_webhook(db, body=body, signature=x_razorpay_signature)
|
|
|
|
|
|
@router.post("/mock")
|
|
async def mock_payment_webhook(
|
|
request: Request,
|
|
db: DbSession,
|
|
x_mock_signature: str | None = Header(default=None, alias="X-Mock-Signature"),
|
|
) -> dict:
|
|
"""Mock provider webhook (development / tests only)."""
|
|
settings = get_settings()
|
|
if settings.environment.lower() != "development":
|
|
raise HTTPException(status_code=404, detail="Not found")
|
|
body = await request.body()
|
|
return process_webhook(db, body=body, signature=x_mock_signature)
|