Installazione
Cargo.toml:
Avvio rapido
Il percorso più veloce utilizzaManagedProvider — nessun nodo Lightning necessario, commissione dello 0,3%:
LightningProvider — vedi Provider personalizzato di seguito.
Provider personalizzato
Options
| Campo | Tipo | Descrizione |
|---|---|---|
price_sats | u64 | Prezzo per chiamata in satoshis (obbligatorio) |
lightning | Arc<dyn LightningProvider> | Il tuo backend Lightning (obbligatorio) |
on_payment | Option<Box<dyn Fn(L402Token, u64)>> | Callback eseguita dopo ogni pagamento verificato |
Deprecato: with_address()
Options::with_address(address) è stato rimosso nella v1.4.0. Usa invece Options::new(sats, ManagedProvider::new(address)):
l402_middleware(opts: Options)
Restituisce un axum::middleware::Layer compatibile con axum 0.8+.
Comportamento
| Richiesta | Risposta |
|---|---|
Nessun header Authorization | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
L402 <macaroon>:<preimage> valido | Il handler viene eseguito |
| Token non valido o scaduto | 401 Unauthorized |
| preimage già utilizzato | 401 Token already used |
Corpo della risposta 402
Callback on_payment
Flag delle funzionalità
axum-middleware per utilizzare solo le funzioni di verifica del core senza axum o reqwest:
Verifica
SHA256(preimage) == paymentHash viene verificato localmente usando il crate sha2 — nessuna chiamata di rete nel percorso critico. La scadenza del token viene controllata nella stessa operazione.
Codici di errore
| Stato | Significato |
|---|---|
402 | Nessun token di pagamento — paga la fattura |
401 | Token non valido o macaroon scaduto |
401 | preimage già utilizzato (già usato) |