generated from knso/webklar-preview-template
Wer von der tuerkischen Seite kam, landete bisher auf einer deutschen Stripe-Seite — fuer die Zielgruppe die groesste Huerde im Kaufvorgang. /kaufen nimmt jetzt 'sprache' entgegen und gibt sie als locale an Stripe weiter. Nur Sprachen aus STRIPE_SPRACHEN werden geschickt: Ein unbekannter Wert laesst Stripe die Session mit 400 ablehnen, der Kauf waere kaputt. Fuer Arabisch, Tigrinya usw. (kennt Stripe nicht) wird nichts mitgeschickt, dann waehlt Stripe selbst anhand des Browsers. Alle drei Kauf-Stellen geben die Sprache mit: Sprachseiten fest ihre eigene, Demo-Seite die dort gewaehlte Zielsprache, Startseite 'de'. Geprueft: tr/de/pl/ar liefern Bezahlseiten, und eine erfundene Sprache faellt sauber zurueck statt den Kauf zu brechen. Stripe Link (die vorausgewaehlte Schnellzahlung) laesst sich NICHT per API abschalten — laut Stripe-Docs nur in den Zahlungsmethoden-Einstellungen des Dashboards. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
BehördenKlar Backend-Proxy
Cloudflare Worker, der den Anthropic-API-Key serverseitig hält. Die App schickt ihre Claude-Anfragen an diesen Worker statt direkt an Anthropic — kein API-Key in der App, Missbrauchsschutz inklusive.
Was der Worker macht
- Prüft die anonyme Geräte-ID (
x-geraete-id-Header) und setzt ein Tageslimit pro Gerät durch (Standard: 20 Anfragen, siehewrangler.toml) - Erlaubt nur die Modelle, die die App nutzt, und deckelt
max_tokens - Leitet den Request-Body unverändert an
api.anthropic.com/v1/messagesweiter und setzt dabei serverseitigx-api-key+anthropic-version - Gibt die Anthropic-Antwort unverändert zurück
Deployment (einmalig)
cd proxy
npm install
# Bei Cloudflare anmelden (kostenloser Account reicht für den Start)
npx wrangler login
# KV-Namespace für das Rate-Limit anlegen …
npx wrangler kv namespace create RATE_LIMIT
# … und die ausgegebene ID in wrangler.toml bei [[kv_namespaces]] eintragen
# Anthropic-API-Key als Secret hinterlegen (von console.anthropic.com)
npx wrangler secret put ANTHROPIC_API_KEY
# Deployen
npm run deploy
Der Deploy gibt eine URL aus, z. B. https://behoerdenklar-proxy.<account>.workers.dev.
App umstellen
In src/services/claudeClient.ts die URL eintragen:
const PROXY_URL: string | null = 'https://behoerdenklar-proxy.<account>.workers.dev';
Fertig — die App braucht dann keinen API-Key mehr in den Einstellungen.
Lokal testen
npm run dev # startet den Worker auf http://localhost:8787
Dann in claudeClient.ts vorübergehend PROXY_URL = 'http://localhost:8787'
setzen (im Simulator; auf echtem Gerät die LAN-IP des Rechners verwenden).
Später ergänzen (wenn Abo/IAP kommt)
- Abo-Prüfung: RevenueCat-Webhook oder Receipt-Validierung vor dem Weiterleiten
- Tageslimit je nach Abo-Stufe (Free: 3, Abo: 20+)
- Die Geräte-ID durch eine echte Nutzer-ID ersetzen