diff --git a/apps/infoalloggi/src/pages/api/stripe-webhook.ts b/apps/infoalloggi/src/pages/api/stripe-webhook.ts index d36e023..26b43f0 100644 --- a/apps/infoalloggi/src/pages/api/stripe-webhook.ts +++ b/apps/infoalloggi/src/pages/api/stripe-webhook.ts @@ -35,80 +35,91 @@ const handler = async ( const createCaller = t.createCallerFactory(appRouter); const caller = createCaller(ctx); - // Handle the event - switch (event.type) { - case "payment_intent.created": { - const paymentIntent = event.data.object; - const { id, metadata } = paymentIntent; + try { + // Handle the event + switch (event.type) { + case "payment_intent.created": { + const paymentIntent = event.data.object; + const { id, metadata } = paymentIntent; - if (!metadata) { - res.status(400).send("No metadata in payment intent"); - return; + if (!metadata) { + res.status(400).send("No metadata in payment intent"); + return; + } + if ( + !metadata.paymentId || + !(typeof metadata.paymentId === "string") + ) { + res.status(400).send("No orderId or userId in metadata"); + return; + } + + await caller.stripe.whIntentCreated({ + paymentId: metadata.paymentId as PaymentsId, + pIntentId: id, + }); + + break; } - if (!metadata.paymentId || !(typeof metadata.paymentId === "string")) { - res.status(400).send("No orderId or userId in metadata"); - return; + case "payment_intent.succeeded": { + const paymentIntent = event.data.object; + const { id, metadata } = paymentIntent; + + if (!metadata) { + res.status(400).send("No metadata in payment intent"); + return; + } + if ( + !metadata.paymentId || + !(typeof metadata.paymentId === "string") + ) { + res.status(400).send("No orderId or userId in metadata"); + return; + } + await caller.stripe.whIntentSucceeded({ + paymentId: metadata.paymentId as PaymentsId, + pIntentId: id, + pm_id: + typeof paymentIntent.payment_method === "string" + ? paymentIntent.payment_method + : "", + }); + + break; + } + case "payment_intent.canceled": { + const paymentIntent = event.data.object; + await caller.stripe.whIntentFailed({ + pIntentId: paymentIntent.id, + }); + + break; + } + case "payment_intent.payment_failed": { + const paymentIntent = event.data.object; + await caller.stripe.whIntentFailed({ + pIntentId: paymentIntent.id, + }); + break; + } + case "payment_intent.processing": { + //const paymentIntent = event.data.object; + + //console.log("PaymentIntent processing", paymentIntent); + + break; } - await caller.stripe.whIntentCreated({ - paymentId: metadata.paymentId as PaymentsId, - pIntentId: id, - }); - - break; - } - case "payment_intent.succeeded": { - const paymentIntent = event.data.object; - const { id, metadata } = paymentIntent; - - if (!metadata) { - res.status(400).send("No metadata in payment intent"); - return; - } - if (!metadata.paymentId || !(typeof metadata.paymentId === "string")) { - res.status(400).send("No orderId or userId in metadata"); - return; - } - await caller.stripe.whIntentSucceeded({ - paymentId: metadata.paymentId as PaymentsId, - pIntentId: id, - pm_id: - typeof paymentIntent.payment_method === "string" - ? paymentIntent.payment_method - : "", - }); - - break; - } - case "payment_intent.canceled": { - const paymentIntent = event.data.object; - await caller.stripe.whIntentFailed({ - pIntentId: paymentIntent.id, - }); - - break; - } - case "payment_intent.payment_failed": { - const paymentIntent = event.data.object; - await caller.stripe.whIntentFailed({ - pIntentId: paymentIntent.id, - }); - break; - } - case "payment_intent.processing": { - //const paymentIntent = event.data.object; - - //console.log("PaymentIntent processing", paymentIntent); - - break; + default: + //console.log(`Unhandled event type: ${event.type}`); + break; } - default: - //console.log(`Unhandled event type: ${event.type}`); - break; + res.status(200).json({ received: true }); + } catch (error) { + console.error("Error handling webhook event:", error); + res.status(200).json({ received: true }); } - - res.status(200).json({ received: true }); } else { res.setHeader("Allow", "POST"); res.status(405).end("Method Not Allowed"); diff --git a/apps/infoalloggi/src/schemas/public/Comuni.ts b/apps/infoalloggi/src/schemas/public/Comuni.ts index 6efdfe6..17bf87f 100644 --- a/apps/infoalloggi/src/schemas/public/Comuni.ts +++ b/apps/infoalloggi/src/schemas/public/Comuni.ts @@ -15,6 +15,8 @@ export default interface ComuniTable { sigla: ColumnType; catasto: ColumnType; + + cap: ColumnType; } export type Comuni = Selectable;