Instalación
Requisitos: Node.js 18+, Express 4+
Inicio rápido
l402(options) — middleware
Devuelve un RequestHandler de Express que aplica el pago L402 en la ruta.
Opciones
Comportamiento
Cuerpo de la respuesta 402
Encabezado WWW-Authenticate
Proveedores
AlbyProvider — recomendado para el modo soberano
Alby — billetera sin custodia. Tú controlas las claves.
BTCPayProvider — autoalojado, cero confianza
Ejecuta tu propio BTCPay Server. Soberanía total.
BlinkProvider — con custodia, el inicio más sencillo
Blink — gratuito, sin KYC para montos pequeños.
LNbitsProvider
Autoalojado o en legend.lnbits.com.
OpenNodeProvider
ManagedProvider — modo nube (0.3% de comisión)
l402kit.com aloja el nodo de Lightning. Recibes el 99.7% de cada pago. Opt-in explícito.
El registro se ejecuta una vez al inicio (fire-and-forget, los errores son silenciosos). La API aparece en l402kit.com/apis.json para que los agentes puedan descubrirla automáticamente.
Protección contra repetición
Por defecto — en memoria (desarrollo)
Integrado. Se reinicia al reiniciar el proceso. Adecuado para despliegues de un solo proceso.
Redis (producción — múltiples instancias)
RedisReplayAdapter usa SET key 1 NX EX ttl — atómico, libre de condiciones de carrera.
Webhooks de pago
Recibe un evento firmado tras cada pago.
Payload del webhook:
Callback onPayment
Hook síncrono ejecutado tras cada pago verificado, antes de next():
Registro de pagos con Supabase
Establece SUPABASE_URL + SUPABASE_ANON_KEY en tu entorno para registrar los pagos automáticamente.
Esquema de la tabla de pagos (payments):
payment_hash almacena SHA256(preimage), no el preimage en crudo. El preimage es el secreto de pago Lightning de 32 bytes — su hash ya es público en la factura BOLT11.
Utilidades independientes
Tipos
Tiempo de verificación
La verificación del token ejecuta SHA256(preimage) == paymentHash en memoria — sub-milisegundo, sin llamada de red en el camino crítico.
El ReplayAdapter en memoria (por defecto) también se ejecuta de forma síncrona. Si usas RedisReplayAdapter, añade un viaje de ida y vuelta a Redis de 5–50 ms por solicitud. Planifica la capacidad en consecuencia para endpoints de alta frecuencia.
Compatibilidad con x402 (encabezado X-Payment)
El middleware acepta silenciosamente el encabezado X-Payment (utilizado por el protocolo x402 de Coinbase) además del encabezado estándar Authorization: L402 …. Ambos se tratan de forma idéntica — útil si deseas atender clientes que hablen cualquiera de los dos protocolos.
No se necesita configuración; siempre está habilitado.
Guía de migración
v1.1 → v1.2
Renombra la columna en tu tabla payments: