/** * @ai-summary Webhook routes for Stripe events * @ai-context PUBLIC endpoint - no JWT auth, authenticated via Stripe signature */ import { FastifyPluginAsync } from 'fastify'; import { WebhooksController } from './webhooks.controller'; export const webhooksRoutes: FastifyPluginAsync = async (fastify) => { const controller = new WebhooksController(); // POST /api/webhooks/stripe - PUBLIC endpoint (no JWT auth) // Stripe authenticates via webhook signature verification // IMPORTANT: rawBody MUST be enabled for signature verification to work fastify.post( '/webhooks/stripe', { config: { rawBody: true, // Enable raw body for Stripe signature verification }, }, controller.handleStripeWebhook.bind(controller) ); };