Installation
Prérequis : Node.js 18+, Express 4+
Démarrage rapide
l402(options) — middleware
Retourne un RequestHandler Express qui impose le paiement L402 sur la route.
Options
Comportement
Corps de la réponse 402
En-tête WWW-Authenticate
Fournisseurs
AlbyProvider — recommandé pour le mode souverain
Alby — portefeuille non-custodial. Vous contrôlez les clés.
BTCPayProvider — auto-hébergé, zéro confiance
Gérez votre propre BTCPay Server. Souveraineté totale.
BlinkProvider — custodial, démarrage le plus simple
Blink — gratuit, sans KYC pour les petits montants.
LNbitsProvider
Auto-hébergé ou legend.lnbits.com.
OpenNodeProvider
ManagedProvider — mode cloud (0,3% de frais)
l402kit.com héberge le nœud Lightning. Vous recevez 99,7% de chaque paiement. Activation explicite requise.
L’inscription s’effectue une seule fois au démarrage (fire-and-forget, les erreurs sont silencieuses). L’API apparaît sur l402kit.com/apis.json afin que les agents puissent la découvrir automatiquement.
Protection contre la répétition
Par défaut — en mémoire (développement)
Intégré. Se réinitialise au redémarrage. Convient aux déploiements mono-processus.
Redis (production — multi-instance)
RedisReplayAdapter utilise SET key 1 NX EX ttl — atomique, sans condition de course.
Webhooks de paiement
Recevez un événement signé après chaque paiement.
Charge utile du webhook :
Callback onPayment
Hook synchrone appelé après chaque paiement vérifié, avant next() :
Journalisation des paiements avec Supabase
Définissez SUPABASE_URL + SUPABASE_ANON_KEY dans votre environnement pour journaliser les paiements automatiquement.
Schéma de la table des paiements (payments) :
payment_hash stocke SHA256(preimage), et non le preimage brut. Le preimage est le secret de paiement Lightning de 32 octets — son hash est déjà public dans la facture BOLT11.
Utilitaires autonomes
Types
Timing de vérification
La vérification du jeton exécute SHA256(preimage) == paymentHash en mémoire — sous la milliseconde, sans appel réseau sur le chemin critique.
Le ReplayAdapter en mémoire (par défaut) s’exécute également de manière synchrone. Si vous utilisez RedisReplayAdapter, comptez 5 à 50 ms d’aller-retour Redis par requête. Planifiez la capacité en conséquence pour les endpoints à haute fréquence.
Compatibilité x402 (en-tête X-Payment)
Le middleware accepte silencieusement l’en-tête X-Payment (utilisé par le protocole x402 de Coinbase) en plus de l’en-tête standard Authorization: L402 …. Les deux sont traités de manière identique — utile si vous souhaitez servir des clients parlant l’un ou l’autre protocole.
Aucune configuration requise ; cette fonctionnalité est toujours activée.
Guide de migration
v1.1 → v1.2
Renommez la colonne dans votre table payments :