Installation
Cargo.toml:
Schnellstart
Der schnellste Weg verwendetManagedProvider — kein Lightning-Node erforderlich, 0,3% Gebühr:
LightningProvider-Trait — siehe Benutzerdefinierter Provider unten.
Benutzerdefinierter Provider
Options
| Feld | Typ | Beschreibung |
|---|---|---|
price_sats | u64 | Preis pro Aufruf in satoshis (erforderlich) |
lightning | Arc<dyn LightningProvider> | Ihr Lightning-Backend (erforderlich) |
on_payment | Option<Box<dyn Fn(L402Token, u64)>> | Callback, der nach jeder verifizierten Zahlung ausgelöst wird |
Veraltet: with_address()
Options::with_address(address) wurde in v1.4.0 entfernt. Verwenden Sie stattdessen Options::new(sats, ManagedProvider::new(address)):
l402_middleware(opts: Options)
Gibt einen axum::middleware::Layer zurück, der mit axum 0.8+ kompatibel ist.
Verhalten
| Anfrage | Antwort |
|---|---|
Kein Authorization-Header | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
Gültiges L402 <macaroon>:<preimage> | Handler wird ausgeführt |
| Ungültiges oder abgelaufenes Token | 401 Unauthorized |
| Wiederverwendetes preimage | 401 Token already used |
402-Antwort-Body
on_payment-Callback
Feature-Flags
axum-middleware, um nur die Kernverifizierungsfunktionen ohne axum oder reqwest zu verwenden:
Verifizierung
SHA256(preimage) == paymentHash wird lokal mit dem sha2-Crate verifiziert — kein Netzwerkaufruf auf dem kritischen Pfad. Die Token-Ablaufzeit wird in derselben Operation geprüft.
Fehlercodes
| Status | Bedeutung |
|---|---|
402 | Kein Zahlungstoken — bezahlen Sie die Rechnung |
401 | Ungültiges Token oder abgelaufener macaroon |
401 | Wiederverwendetes preimage (bereits verwendet) |