···
1549
-
const { validateEvent } = await import("@polar-sh/sdk/webhooks");
1548
+
const { validateEvent } = await import("@polar-sh/sdk/webhooks");
1551
-
// Get raw body as string
1552
-
const rawBody = await req.text();
1553
-
const headers = Object.fromEntries(req.headers.entries());
1550
+
// Get raw body as string
1551
+
const rawBody = await req.text();
1552
+
const headers = Object.fromEntries(req.headers.entries());
1555
-
// Validate webhook signature (validated at startup)
1556
-
const webhookSecret = process.env.POLAR_WEBHOOK_SECRET as string;
1557
-
const event = validateEvent(rawBody, headers, webhookSecret);
1554
+
// Validate webhook signature (validated at startup)
1555
+
const webhookSecret = process.env.POLAR_WEBHOOK_SECRET as string;
1556
+
let event: ReturnType<typeof validateEvent>;
1558
+
event = validateEvent(rawBody, headers, webhookSecret);
1560
+
// Validation failed - log but return generic response
1561
+
console.error("[Webhook] Signature validation failed:", error);
1562
+
return Response.json({ error: "Invalid webhook" }, { status: 400 });
1559
-
console.log(`[Webhook] Received event: ${event.type}`);
1565
+
console.log(`[Webhook] Received event: ${event.type}`);
1561
-
// Handle different event types
1567
+
// Handle different event types
case "subscription.updated": {
const { id, status, customerId, metadata } = event.data;
···
return Response.json({ received: true });
1622
-
console.error("[Webhook] Error processing webhook:", error);
1623
-
return Response.json(
1624
-
{ error: "Webhook processing failed" },
1629
+
// Processing failed - log with detail but return generic response
1630
+
console.error("[Webhook] Event processing failed:", error);
1631
+
return Response.json({ error: "Invalid webhook" }, { status: 400 });