Установка
Требования: Node.js 18+, Express 4+
Быстрый старт
l402(options) — middleware
Возвращает Express RequestHandler, который обеспечивает соблюдение L402-платежа на маршруте.
Параметры
Поведение
Тело ответа 402
Заголовок WWW-Authenticate
Провайдеры
AlbyProvider — рекомендуется для суверенного режима
Alby — некастодиальный кошелёк. Ключи контролируете вы.
BTCPayProvider — самостоятельный хостинг, полное доверие отсутствует
Запустите собственный BTCPay Server. Полный суверенитет.
BlinkProvider — кастодиальный, простейший старт
Blink — бесплатно, без KYC для небольших сумм.
LNbitsProvider
Самостоятельный хостинг или legend.lnbits.com.
OpenNodeProvider
ManagedProvider — облачный режим (комиссия 0.3%)
l402kit.com размещает Lightning-ноду. Вы получаете 99.7% от каждого платежа. Требует явного подтверждения.
Регистрация выполняется один раз при запуске (fire-and-forget, ошибки игнорируются). API появляется на l402kit.com/apis.json, чтобы агенты могли обнаружить его автоматически.
Защита от повторного использования
По умолчанию — в памяти (для разработки)
Встроено. Сбрасывается при перезапуске. Подходит для однопроцессных развёртываний.
Redis (продакшн — несколько инстансов)
RedisReplayAdapter использует SET key 1 NX EX ttl — атомарная операция, без гонки данных.
Вебхуки платежей
Получайте подписанное событие после каждого платежа.
Тело вебхука:
Коллбэк onPayment
Синхронный хук, вызываемый после каждого подтверждённого платежа, до next():
Логирование платежей в Supabase
Установите SUPABASE_URL + SUPABASE_ANON_KEY в переменных окружения, чтобы автоматически логировать платежи.
Схема таблицы платежей (payments):
payment_hash хранит SHA256(preimage), а не сам preimage. preimage — это 32-байтный секрет Lightning-платежа; его хэш уже публично доступен в BOLT11-инвойсе.
Автономные утилиты
Типы
Время верификации
Верификация токена выполняет SHA256(preimage) == paymentHash в памяти — менее миллисекунды, без сетевого вызова на горячем пути.
Встроенный ReplayAdapter (по умолчанию, в памяти) также работает синхронно. При использовании RedisReplayAdapter добавьте 5–50 мс на Redis-запрос для каждого запроса. Планируйте пропускную способность соответственно для высоконагруженных эндпоинтов.
Совместимость с x402 (заголовок X-Payment)
Middleware без дополнительной настройки принимает заголовок X-Payment (используемый в протоколе x402 от Coinbase) наряду со стандартным заголовком Authorization: L402 …. Оба обрабатываются одинаково — полезно, если вы хотите обслуживать клиентов, работающих с любым из протоколов.
Настройка не требуется; функция всегда включена.
Руководство по миграции
v1.1 → v1.2
Переименуйте столбец в таблице payments: