Interní provozní zápis — postup přechodu Stripe integrace z test mode na live mode. Žádné kroky nezasahují do kódu ani Helm šablon.
Architektura tajemství
- Stripe klíče nejsou v gitu. BE čte
STRIPE_SECRET_KEY+STRIPE_WEBHOOK_SECRETz K8s Secretustripe-creds(nstalkide, klíčesecretKey/webhookSecret) přessecretKeyRefvtalkide-infraHelmbe-deployment.yaml. - FE publishable key
VITE_STRIPE_PUBLISHABLE_KEYse zapéká při Docker buildu přes--build-argz GitLab CI/CD variable (projekttalkide-fe). FE nikdy nedrží secret key. - Webhook endpoint
POST /api/v1/stripe/webhookjepermitAllvSecurityConfig, ingress bez path filtru — autentizace dělá Stripe-Signature HMAC v BE.
Aktuální stav (test/sandbox mode)
- K8s Secret
stripe-credsnaplněn sandbox hodnotami:sk_test_...+ persistentní test-modewhsec_...z webhook endpointu vytvořeného přes Stripe API (url=https://api.talkide.app/api/v1/stripe/webhook). - GitLab CI variable
VITE_STRIPE_PUBLISHABLE_KEY= sandboxpk_test_.... - Reálné peníze netečou.
Live flip procedura
Provede se až po aktivaci live Stripe účtu (ruční akce člověka v Stripe Dashboardu — neautomatizovatelné).
- Ve Stripe Dashboardu v LIVE mode vytvořit webhook endpoint na stejnou URL
https://api.talkide.app/api/v1/stripe/webhook→ dostaneš LIVEwhsec_live_...(odlišný od test-modewhsec). - Aktualizovat K8s Secret
stripe-creds:kubectl -n talkide create secret generic stripe-creds \ --from-literal=secretKey=sk_live_... \ --from-literal=webhookSecret=whsec_live_... \ --dry-run=client -o yaml | kubectl apply -f - - GitLab CI variable
VITE_STRIPE_PUBLISHABLE_KEYzměnit napk_live_...(Settings → CI/CD → Variables v projektutalkide-fe). - Rebuild FE image (CI manual trigger, ~5–10 min CI minut) + rolling restart BE deploymentu (aby načetl nový secret):
kubectl -n talkide rollout restart deployment/talkide-be - Pořadí je závazné: secret + CI variable první, pak rebuild/restart. Žádná změna kódu ani Helm šablon.
Gapy před live flipem (nutno vědomě uzavřít)
Viz také specification/limitations.md sekce Stripe.
- Zaseklý PENDING top-up — pokud webhook
payment_intent.succeedednedorazí, peníze jsou stržené ale kredit nepřipsaný. Chybí reconciliation job / admin UI. - Účtenky/faktury za top-up — Stripe generuje PaymentIntent recepty, ale TalkIDE nemá vlastní faktury/PDF pro B2B (daňový doklad). Mockup stav.
- Tax/VAT — žádná daňová kalkulace, EU VAT neimplementováno.
- Refund policy — chybí refund flow (admin ani user-initiated).
- 3DS/SCA (EU live) — v live mode mohou banky vyžadovat 3D Secure pro evropské karty. Před flipem otestovat průchod 3DS kartou (
4000 0000 0000 3220) v live test session. Stripe Elements to řeší FE-side, ale BE musí správně zpracovatrequires_actionstav PaymentIntentu.
Migrace
- Migration
0027(credit_topuptabulka) má<rollback>sekci — forward-apply na prod DO Managed PG při deployi (immutable režim, DB se nedropuje, Liquibase aplikuje jen pending changesety).
CI cost gate připomenutí
- FE/BE build: ~5–10 min/run. GitLab Free: 400 min/měs.
.gitlab-ci.ymlmáwhen: manual— rebuild FE po live flipu = explicit opt-in, ne automatika.
Was this page helpful?
Thanks for the feedback.