Skip to main content

Установка

Требования: 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: