インストール
クイックスタート
セルフホストモード(独自プロバイダーを使用)
l402.Options
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
PriceSats | int | 必須 | 1回の呼び出しあたりの価格(satoshi単位) |
Lightning | LightningProvider | 必須 | Lightning バックエンド(NewBlinkProvider を使用) |
OnPayment | func(L402Token, int) | — | 検証済み支払いのたびに発火するコールバック |
l402.Middleware(opts Options, next http.Handler) http.Handler
net/http、Chi、Gorilla Mux、およびあらゆる標準的な Go HTTP フレームワークと互換性のある http.Handler を返します。
動作
| リクエスト | レスポンス |
|---|---|
Authorization ヘッダーなし | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
有効な L402 <macaroon>:<preimage> | next.ServeHTTP(w, r) |
| 無効または期限切れのトークン | 401 Unauthorized |
| 再利用された preimage | 401 Token already used |
402 レスポンスボディ
LightningProvider インターフェース
OnPayment コールバック
検証
SHA256(preimage) == paymentHash はメモリ内でローカルに検証されます — ホットパスでの処理はサブミリ秒、ネットワーク呼び出しなしです。トークンの有効期限(macaroon 内の exp フィールド)も同一の処理内でチェックされます。
リプレイガードはデフォルトでインメモリマップを使用します(単一プロセスに対して安全)。マルチインスタンス構成では、共有ストア(Redis など)を使用してください — これにより検証済みリクエストごとに 5〜50 ms のラウンドトリップが追加されます。
Chi ルーターの使用例
l402.Middleware は標準の http.Handler を返すため、Chi の r.Handle でそのまま使用できます:
エラーコード
| ステータス | 意味 |
|---|---|
402 | 支払いトークンなし — インボイスを支払ってください |
401 | 無効なトークンまたは期限切れの macaroon |
401 | 再利用されたトークン(preimage は既に使用済み) |