Installazione
Requisiti: Node.js 18+, Express 4+
Avvio rapido
l402(options) — middleware
Restituisce un RequestHandler Express che impone il pagamento L402 sulla rotta.
Opzioni
Comportamento
Corpo della risposta 402
Provider
AlbyProvider — consigliato per la modalità sovrana
Alby — wallet self-custodial. Controlli le chiavi tu stesso.
BTCPayProvider — self-hosted, zero trust
Esegui il tuo BTCPay Server. Sovranità completa.
BlinkProvider — custodiale, il modo più semplice per iniziare
Blink — gratuito, nessun KYC per piccoli importi.
LNbitsProvider
Self-hosted o legend.lnbits.com.
OpenNodeProvider
ManagedProvider — modalità cloud (commissione 0,3%)
l402kit.com ospita il nodo Lightning. Ricevi il 99,7% di ogni pagamento. Opt-in esplicito.
La registrazione viene eseguita una volta all’avvio (fire-and-forget, gli errori sono silenziosi). L’API appare su l402kit.com/apis.json in modo che gli agenti possano scoprirla automaticamente.
Protezione replay
Predefinita — in-memory (sviluppo)
Integrata. Si azzera al riavvio. Adatta per deployment a processo singolo.
Redis (produzione — multi-istanza)
RedisReplayAdapter utilizza SET key 1 NX EX ttl — atomico, privo di race condition.
Webhook di pagamento
Ricevi un evento firmato dopo ogni pagamento.
Payload webhook:
Callback onPayment
Hook sincrono chiamato dopo ogni pagamento verificato, prima di next():
Registrazione pagamenti con Supabase
Imposta SUPABASE_URL + SUPABASE_ANON_KEY nel tuo ambiente per registrare i pagamenti automaticamente.
Schema della tabella pagamenti (payments):
payment_hash memorizza SHA256(preimage), non il preimage grezzo. Il preimage è il segreto di pagamento Lightning a 32 byte — il suo hash è già pubblico nella fattura BOLT11.
Utility standalone
Tipi
Tempi di verifica
La verifica del token esegue SHA256(preimage) == paymentHash in memoria — sub-millisecondo, nessuna chiamata di rete sul percorso critico.
Il ReplayAdapter in-memory (predefinito) viene eseguito anche in modo sincrono. Se utilizzi RedisReplayAdapter, aggiungi un round-trip Redis di 5–50 ms per ogni richiesta. Pianifica la capacità di conseguenza per gli endpoint ad alta frequenza.
Il middleware accetta silenziosamente l’header X-Payment (utilizzato dal protocollo x402 di Coinbase) in aggiunta all’header standard Authorization: L402 …. Entrambi sono trattati in modo identico — utile se vuoi servire client che parlano uno dei due protocolli.
Nessuna configurazione necessaria; è sempre abilitato.
Guida alla migrazione
v1.1 → v1.2
Rinomina la colonna nella tua tabella payments: