# 26 — App pubblica: checkout con Stripe Leggi `CLAUDE.md`. ## Obiettivo Checkout guest o autenticato con pagamento Stripe. ## Cosa fare - `/checkout` in step: contatti (email; opzione "accedi" se ha un account), indirizzo di spedizione/fatturazione (con campi azienda opzionali: ragione sociale, P.IVA, codice SDI/PEC salvati nei metadata), spedizione, pagamento, riepilogo. - Pagamento con Stripe Payment Element (`@stripe/stripe-js`) usando il `client_secret` da `POST /shop/cart/payment`; dopo conferma chiama `POST /shop/cart/complete`. - Gestione 3D Secure e return URL; errori di pagamento mostrati in modo chiaro. - Pagina `/ordine/:id/confermato` con riepilogo e invito a creare un account per seguire l'ordine (gli ordini guest verranno collegati automaticamente alla verifica email). - Checkout solo lato browser (non SSR); consenso privacy obbligatorio. ## Criteri di accettazione - Pagamento con carta test Stripe → ordine creato in Medusa, email di conferma inviata (via webhook, prompt 14). - Carta test che richiede 3DS → flusso completato correttamente. - Carta rifiutata → errore mostrato, carrello intatto. - `CLAUDE.md` aggiornato.