Instalação
Cargo.toml:
Início Rápido
O caminho mais rápido usaManagedProvider — nenhum nó Lightning necessário, taxa de 0,3%:
LightningProvider — veja Provedor personalizado abaixo.
Provedor personalizado
Options
| Campo | Tipo | Descrição |
|---|---|---|
price_sats | u64 | Preço por chamada em satoshis (obrigatório) |
lightning | Arc<dyn LightningProvider> | Seu backend Lightning (obrigatório) |
on_payment | Option<Box<dyn Fn(L402Token, u64)>> | Callback disparado após cada pagamento verificado |
Descontinuado: with_address()
Options::with_address(address) foi removido na v1.4.0. Use Options::new(sats, ManagedProvider::new(address)) em vez disso:
l402_middleware(opts: Options)
Retorna um axum::middleware::Layer compatível com axum 0.8+.
Comportamento
| Requisição | Resposta |
|---|---|
Sem cabeçalho Authorization | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
L402 <macaroon>:<preimage> válido | Handler é executado |
| Token inválido ou expirado | 401 Unauthorized |
| preimage repetido | 401 Token already used |
Corpo da resposta 402
Callback on_payment
Flags de funcionalidade
axum-middleware para usar apenas as funções de verificação do núcleo sem axum ou reqwest:
Verificação
SHA256(preimage) == paymentHash é verificado localmente usando o crate sha2 — sem chamada de rede no caminho crítico. A expiração do token é verificada na mesma operação.
Códigos de erro
| Status | Significado |
|---|---|
402 | Nenhum token de pagamento — pague a invoice |
401 | Token inválido ou macaroon expirado |
401 | preimage repetido (já utilizado) |