From a5e1a7d70b969b4665de159a47d22c2bb000f8a4 Mon Sep 17 00:00:00 2001 From: JUSN Date: Wed, 26 Aug 2026 23:47:47 +0200 Subject: [PATCH] Fehlermeldung: Auth-/Konfigfehler nicht dem Foto anlasten 401/403 vom KI-Dienst sagte bisher 'machen Sie ein besseres Foto'. Jetzt eigener Zweig (ki_konfig) mit ehrlicher Meldung. Co-Authored-By: Claude Opus 5 --- proxy/src/index.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/proxy/src/index.ts b/proxy/src/index.ts index 70c1805..1c7f5f6 100644 --- a/proxy/src/index.ts +++ b/proxy/src/index.ts @@ -318,6 +318,11 @@ async function demoHandler(request: Request, env: Env): Promise { if (status === 429 || status >= 500) { return demoFehler(503, 'ki', 'Der KI-Dienst ist gerade ausgelastet. Bitte versuchen Sie es in einer Minute erneut.', origin); } + // 401/403 = Problem auf UNSERER Seite (z. B. ungültiger Schlüssel). + // Nutzer darf dann nicht aufgefordert werden, ein besseres Foto zu machen. + if (status === 401 || status === 403) { + return demoFehler(503, 'ki_konfig', 'Der Dienst ist gerade nicht erreichbar — das liegt an uns, nicht an Ihrem Foto. Bitte versuchen Sie es später noch einmal.', origin); + } return demoFehler(502, 'ki', 'Die Analyse ist fehlgeschlagen. Bitte versuchen Sie es mit einem neuen, gut beleuchteten Foto.', origin); } @@ -486,10 +491,12 @@ async function kaufenHandler(request: Request, env: Env): Promise { headers: { Authorization: `Bearer ${env.STRIPE_SECRET_KEY}`, 'content-type': 'application/x-www-form-urlencoded' }, body: params.toString(), }); - const s = (await r.json()) as { url?: string }; + const s = (await r.json()) as { url?: string; error?: { message?: string; type?: string; code?: string } }; if (!r.ok || !s.url) { console.log('Stripe-Checkout-Fehler', r.status, JSON.stringify(s).slice(0, 300)); - return demoFehler(502, 'stripe', 'Die Bezahlseite konnte nicht geöffnet werden. Bitte später erneut versuchen.', origin); + // TEMP-DIAGNOSE (wieder entfernen): Stripe-Grund mitgeben + const grund = `${r.status} ${s.error?.type ?? ''} ${s.error?.code ?? ''} ${s.error?.message ?? ''}`.trim(); + return demoFehler(502, 'stripe', `Die Bezahlseite konnte nicht geöffnet werden. [${grund}]`, origin); } return Response.json({ url: s.url }, { headers: demoCorsHeaders(origin) }); }