import { BTCPayProvider } from 'l402-kit';const lightning = new BTCPayProvider( process.env.BTCPAY_URL!, // https://your-btcpay.com process.env.BTCPAY_API_KEY!, // clé API du magasin process.env.BTCPAY_STORE_ID!, // ID du magasin);
BlinkProvider — custodial, démarrage le plus simple
Blink — gratuit, sans KYC pour les petits montants.
import { BlinkProvider } from 'l402-kit';const lightning = new BlinkProvider( process.env.BLINK_API_KEY!, // dashboard.blink.sv → Clés API process.env.BLINK_WALLET_ID!, // votre ID de portefeuille BTC);
import { OpenNodeProvider } from 'l402-kit';const lightning = new OpenNodeProvider( process.env.OPENNODE_API_KEY!, false, // testMode — définir à true pour le bac à sable);
l402kit.com héberge le nœud Lightning. Vous recevez 99,7% de chaque paiement. Activation explicite requise.
import { ManagedProvider } from 'l402-kit';const lightning = ManagedProvider.fromAddress('you@yourdomain.com');// Optionnel : inscription automatique dans le répertoire public des APIconst lightning = ManagedProvider.fromAddress('you@yourdomain.com', { registerDirectory: { url: 'https://api.you.com/v1/data', name: 'My Data API', priceSats: 10, category: 'data', // data | ai | finance | weather | compute | storage | other description: 'Optionnel', },});
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.
Définissez SUPABASE_URL + SUPABASE_ANON_KEY dans votre environnement pour journaliser les paiements automatiquement.
app.get('/api', l402({ priceSats: 10, lightning }), handler);// SUPABASE_URL et SUPABASE_ANON_KEY sont lus depuis process.env automatiquement
Schéma de la table des paiements (payments) :
create table payments ( id uuid primary key default gen_random_uuid(), payment_hash text unique not null, -- SHA256(preimage) — sûr à stocker endpoint text, amount_sats integer, paid_at timestamptz default now());
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.
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.
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.