From f2736fc3d37c3fe60eb2dba3d6a742be70bf00ad Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sun, 18 Jan 2026 19:23:28 +0100 Subject: [PATCH] fix: use hardcoded base URL for Stripe redirect URLs The request.nextUrl.origin returns internal Docker address (0.0.0.0:3000) when behind reverse proxy, causing invalid redirect after payment. --- app/api/create-checkout-session/route.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/api/create-checkout-session/route.ts b/app/api/create-checkout-session/route.ts index 6b0ae78..b19f929 100644 --- a/app/api/create-checkout-session/route.ts +++ b/app/api/create-checkout-session/route.ts @@ -8,6 +8,9 @@ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { // Dynamic pricing configuration (in EUR cents) const TICKET_PRICE_CENTS = 8000 // €80 early bird +// Public base URL (needed because request.nextUrl.origin returns internal Docker address) +const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL || "https://cryptocommonsgather.ing" + export async function POST(request: NextRequest) { try { const formData = await request.formData() @@ -43,8 +46,8 @@ export async function POST(request: NextRequest) { payment_method_types: paymentMethodTypes, line_items: lineItems, mode: "payment", - success_url: `${request.nextUrl.origin}/success?session_id={CHECKOUT_SESSION_ID}`, - cancel_url: `${request.nextUrl.origin}/register`, + success_url: `${BASE_URL}/success?session_id={CHECKOUT_SESSION_ID}`, + cancel_url: `${BASE_URL}/register`, metadata: registrationData ? { name: registrationData.name,