Skip to main content

Installation

Prérequis : Python 3.11+, FastAPI ou Flask (optionnel)

Mode Soberano (vous conservez 100%)

Apportez votre propre fournisseur Lightning — les paiements vont directement vers votre portefeuille, 0% de frais.
Python prend également en charge le mode Managed — utilisez ManagedProvider.from_address("you@blink.sv") (0,3% de frais, aucun nœud requis). Consultez la section Providers ci-dessous.

Flask

Flask + Gunicorn avec des workers gevent/eventlet : l402_required appelle le fournisseur Lightning asynchrone depuis un handler Flask synchrone. Si votre worker Gunicorn utilise le monkey-patching gevent ou eventlet (ce qui crée une boucle d’événements active), le décorateur le détecte automatiquement et exécute l’appel asynchrone dans un thread dédié — aucune action requise. Les workers synchrones Gunicorn standard et uvicorn (FastAPI) ne sont pas affectés.

@l402_required — décorateur

Paramètres

Comportement

Réponse 402


Providers

BlinkProvider

Blink — portefeuille Lightning custodial gratuit, sans KYC pour les petits montants.

LNbitsProvider

OpenNodeProvider

ManagedProvider — mode cloud (0,3% de frais)

l402kit.com héberge le nœud Lightning. Vous recevez 99,7% de chaque paiement — aucune configuration de nœud requise.

Protection contre la répétition

Par défaut — en mémoire (développement)

Intégrée, aucune configuration nécessaire. Se réinitialise au redémarrage du processus.

Redis (production — multi-instance)

Pour les déploiements multi-workers Gunicorn/uvicorn, partagez l’état de répétition via Redis :
RedisReplayAdapter utilise SET key 1 NX EX ttl — atomique et sans condition de concurrence.

Utilitaires autonomes


Provider personnalisé


Tests


Exécution


L402Client — paiement automatique

L402Client encapsule httpx et gère automatiquement la boucle complète 402 → payer → réessayer.

Portefeuilles


AsyncL402Client — async/await

AsyncL402Client utilise httpx.AsyncClient en interne — idéal pour FastAPI, asyncio et les frameworks d’agents IA qui s’exécutent dans une boucle d’événements asynchrone.

Différence avec L402Client


DevProvider + DevWallet — développement local

Développement local sans configuration — aucun nœud Lightning, aucun paiement réel. Cryptographiquement identique à la production : SHA256(preimage) === paymentHash.