Installation
Schnellstart
Selbst gehosteter Modus (eigenen Anbieter mitbringen)
l402.Options
| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
PriceSats | int | erforderlich | Preis pro Aufruf in satoshis |
Lightning | LightningProvider | erforderlich | Ihr Lightning-Backend (verwenden Sie NewBlinkProvider) |
OnPayment | func(L402Token, int) | – | Callback, der nach jeder verifizierten Zahlung ausgelöst wird |
l402.Middleware(opts Options, next http.Handler) http.Handler
Gibt einen http.Handler zurück, der mit net/http, Chi, Gorilla Mux und jedem standardmäßigen Go-HTTP-Framework kompatibel ist.
Verhalten
| Anfrage | Antwort |
|---|---|
Kein Authorization-Header | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
Gültiges L402 <macaroon>:<preimage> | next.ServeHTTP(w, r) |
| Ungültiges oder abgelaufenes Token | 401 Unauthorized |
| Wiederverwendetes preimage | 401 Token already used |
402-Antwort-Body
LightningProvider-Interface
OnPayment-Callback
Verifizierung
SHA256(preimage) == paymentHash wird lokal im Arbeitsspeicher verifiziert – unter einer Millisekunde, kein Netzwerkaufruf auf dem kritischen Pfad. Der Token-Ablauf (Feld exp im macaroon) wird in derselben Operation geprüft.
Der Replay-Schutz verwendet standardmäßig eine In-Memory-Map (sicher für einen einzelnen Prozess). Bei Deployments mit mehreren Instanzen verwenden Sie einen gemeinsamen Speicher (Redis oder ähnliches) – was einen 5–50 ms Roundtrip pro verifizierter Anfrage hinzufügt.
Chi-Router-Beispiel
l402.Middleware gibt einen Standard-http.Handler zurück und funktioniert daher direkt mit Chis r.Handle:
Fehlercodes
| Status | Bedeutung |
|---|---|
402 | Kein Zahlungstoken – bezahlen Sie die Rechnung |
401 | Ungültiges Token oder abgelaufenes macaroon |
401 | Wiederverwendetes Token (preimage bereits verwendet) |