Skip to main content

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 :