Installation
Cargo.toml :
Démarrage rapide
La voie la plus rapide utiliseManagedProvider — aucun nœud Lightning requis, frais de 0,3% :
LightningProvider — voir Fournisseur personnalisé ci-dessous.
Fournisseur personnalisé
Options
| Champ | Type | Description |
|---|---|---|
price_sats | u64 | Prix par appel en satoshis (requis) |
lightning | Arc<dyn LightningProvider> | Votre backend Lightning (requis) |
on_payment | Option<Box<dyn Fn(L402Token, u64)>> | Callback déclenché après chaque paiement vérifié |
Déprécié : with_address()
Options::with_address(address) a été supprimé en v1.4.0. Utilisez Options::new(sats, ManagedProvider::new(address)) à la place :
l402_middleware(opts: Options)
Retourne un axum::middleware::Layer compatible avec axum 0.8+.
Comportement
| Requête | Réponse |
|---|---|
Aucun en-tête Authorization | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
L402 <macaroon>:<preimage> valide | Le gestionnaire s’exécute |
| Token invalide ou expiré | 401 Unauthorized |
| preimage rejoué | 401 Token already used |
Corps de la réponse 402
Callback on_payment
Drapeaux de fonctionnalités
axum-middleware pour utiliser uniquement les fonctions de vérification de base sans axum ni reqwest :
Vérification
SHA256(preimage) == paymentHash est vérifié localement en utilisant le crate sha2 — aucun appel réseau sur le chemin critique. L’expiration du token est vérifiée dans la même opération.
Codes d’erreur
| Statut | Signification |
|---|---|
402 | Aucun token de paiement — payez la facture |
401 | Token invalide ou macaroon expiré |
401 | preimage rejoué (déjà utilisé) |