Lista di controllo pre-lancio
Esegui questi passaggi prima di andare in produzione. Ogni elemento rimanda alla sezione pertinente qui sotto.1
Protezione replay configurata per istanze multiple
L’adapter predefinito è solo in-memory. Se esegui più di un processo (worker Gunicorn, cluster PM2, Kubernetes), imposta
SUPABASE_URL + SUPABASE_ANON_KEY o usa RedisReplayAdapter. Dettagli →2
Variabili d'ambiente nel gestore dei segreti
Non includere mai le chiavi API nel codice sorgente. Usa
.env in locale, un gestore di segreti in produzione. Dettagli →3
Endpoint di health check presente
I ping di monitoraggio non devono innescare la creazione di fatture. Aggiungi una route
/health prima delle tue route a pagamento. Dettagli →4
Le risposte di errore non espongono i dettagli interni
Intercetta gli errori del provider e restituisci un 503 pulito — non uno stack trace. Dettagli →
5
Il prezzo è intenzionale
priceSats dovrebbe riflettere il valore reale. A 1 sat ≈ 0.06 per un endpoint premium è ragionevole. Non impostarlo accidentalmente a 0.6
Monitoraggio uptime sull'endpoint della fattura
Monitora la risposta 402 (è una risposta normale, non un errore). Strumenti come UptimeRobot supportano aspettative personalizzate sul codice di stato.
7
Rate limiting sulla creazione delle fatture
Ogni richiesta non autenticata crea una fattura Lightning. Senza rate limiting, un attaccante può esaurire gratuitamente la quota di fatture del tuo provider. Aggiungi
express-rate-limit prima di distribuire pubblicamente. Dettagli →Critico: protezione replay in produzione
Variabili d’ambiente
Non includere mai le chiavi nel codice sorgente. Usa sempre le variabili d’ambiente:Registrazione dei pagamenti (Supabase)
Registra ogni pagamento su Supabase per la dashboard dell’estensione VS Code e per le analisi:Distribuzione su Cloudflare Workers
Le API l402-kit girano su Cloudflare Workers (isolati V8, zero cold start). L’archivio replay in-memory si azzera per ogni isolato — per API ad alto traffico, usa Cloudflare KV o Durable Objects per la protezione replay.Docker
Eliminazione dei dati utente
Esponi un endpoint di eliminazione affinché gli utenti possano rimuovere definitivamente i propri dati. Il backend l402-kit include/api/delete-data già integrato:
Gestione degli errori
Intercetta gli errori del provider prima che emergano come 500 non formattati:- Non restituire mai stack trace ai client — registrali lato server.
- I timeout del provider (503) sono transitori — è sicuro riprovare con backoff.
- Gli errori di token (401) non sono mai transitori — non riprovare automaticamente, richiedi una nuova fattura.
- Gli errori di rate limit (429) — esponi il campo
retryAfteral chiamante.
Rate limiting
Ogni richiesta non autenticata attivacreateInvoice() sul tuo provider Lightning. Senza rate limiting, chiunque può inondare il tuo endpoint ed esaurire gratuitamente la quota API del provider — anche senza pagare un singolo sat.
Aggiungi express-rate-limit prima delle tue route L402:
I client che già pagano vengono esclusi dalla funzione
skip — il limite si applica solo alle chiamate non autenticate che innescano una nuova fattura. I pagatori legittimi non vengono mai limitati.Endpoint di health check
Aggiungi sempre un health check gratuito affinché gli strumenti di monitoraggio non inneschino la creazione di fatture:Monitoraggio
Metriche chiave da tracciare:- Tasso di risposta 402 — la baseline sana è alta (la maggior parte dei chiamanti deve pagare)
- Tasso di verifica dei pagamenti — rapporto tra chiamate pagate e non pagate
- Latenza del provider —
blink.createInvoice()dovrebbe essere < 500ms - Tentativi di replay — un picco indica attacchi di riutilizzo del token
Prestazioni
- La verifica del token è O(1) — pura crittografia, nessun DB, nessuna rete
- La creazione della fattura (percorso 402) chiama l’API del tuo provider Lightning — aggiungi una cache se ti aspetti che lo stesso endpoint venga colpito ripetutamente prima del pagamento
- L’archivio replay è un
Setin-memory — per distribuzioni multi-istanza, sostituiscilo con Redis