Funktionen: Stripe-Sitzungs-ID bis 128 Zeichen, keine Rohmeldungen beim Bestellen

Live-Fehler: cs_live-Sitzungs-IDs (~66 Zeichen) passten nicht in das Feld
portalFeatures.stripeSessionId (64), die Bestellung brach nach dem Anlegen
der Stripe-Sitzung ab und der Kunde sah die Appwrite-Meldung.
- Setup-Skript: Feld 128 Zeichen, bestehendes Feld wird per ensureStringSize vergroessert
- Fehler von Appwrite oder unerwartete Fehler: Log + verstaendlicher Hinweis

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5.5 committed 2026-09-30 17:58:44 +00:00
1 parent 4b7f73abba
commit b45108c1de
4 files changed
+54 -7

No files matched your search

+11 -6
View File
@@ -8,7 +8,8 @@ import {
DISABLED_MESSAGE,
assertOwnProject,
backfillInvoiceLinks,
getFeatureDoc, listCustomerFeatures,
getFeatureDoc,
listCustomerFeatures,
markOrdered,
runActivation,
} from '../services/siteFeatures.js'
@@ -16,9 +17,13 @@ import {
const router = Router()
const DAY_MS = 24 * 60 * 60 * 1000
function fail(res, err) {
const status = err.status >= 400 && err.status < 600 ? err.status : 500
return res.status(status).json({ error: err.message || 'Interner Serverfehler' })
// Eigene Fehler (httpError) tragen einen Text fuer den Kunden. Fehler von Appwrite (err.type) oder
// unerwartete Fehler werden nur geloggt; der Kunde sieht einen verstaendlichen Hinweis statt der Rohmeldung.
function fail(res, err, fallback) {
const own = err.status >= 400 && err.status < 500 && !err.type
if (own) return res.status(err.status).json({ error: err.message })
console.error('[funktionen]', err.status || '', err.type || '', err.message)
return res.status(500).json({ error: fallback })
}
// Zustaende der Funktionen je Projekt; geschlossene Einrichtungs-Tickets dieses Kunden werden vorher freigeschaltet
@@ -34,7 +39,7 @@ router.get('/', requireSession, async (req, res) => {
consentText: config.funktionen.consentText,
})
} catch (err) {
fail(res, err)
fail(res, err, 'Die Funktionen konnten gerade nicht geladen werden. Bitte lade die Seite gleich noch einmal.')
}
})
@@ -101,7 +106,7 @@ router.post('/news/checkout', requireSession, async (req, res) => {
})
res.json({ url: session.url })
} catch (err) {
fail(res, err)
fail(res, err, 'Die Bestellung konnte gerade nicht gestartet werden. Bitte versuch es später noch einmal oder schreib uns im Chat.')
}
})