इंस्टॉलेशन
Quickstart
Self-hosted मोड (अपना provider लाएं)
l402.Options
| फील्ड | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
PriceSats | int | आवश्यक | प्रति कॉल मूल्य satoshis में |
Lightning | LightningProvider | आवश्यक | आपका Lightning बैकएंड (NewBlinkProvider उपयोग करें) |
OnPayment | func(L402Token, int) | — | प्रत्येक सत्यापित भुगतान के बाद callback फायर होता है |
l402.Middleware(opts Options, next http.Handler) http.Handler
एक http.Handler लौटाता है जो net/http, Chi, Gorilla Mux, और किसी भी मानक Go HTTP फ्रेमवर्क के साथ संगत है।
व्यवहार
| अनुरोध | प्रतिक्रिया |
|---|---|
कोई 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 callback
सत्यापन
SHA256(preimage) == paymentHash को मेमोरी में स्थानीय रूप से सत्यापित किया जाता है — sub-millisecond, हॉट पाथ पर कोई नेटवर्क कॉल नहीं। टोकन समाप्ति (exp फील्ड macaroon में) उसी ऑपरेशन में जांची जाती है।
रिप्ले गार्ड डिफ़ॉल्ट रूप से एक इन-मेमोरी map का उपयोग करता है (एकल प्रक्रिया के लिए सुरक्षित)। मल्टी-इंस्टेंस डिप्लॉयमेंट के लिए, एक साझा स्टोर (Redis या समान) का उपयोग करें — जो प्रत्येक सत्यापित अनुरोध पर 5–50 ms राउंड-ट्रिप जोड़ता है।
Chi राउटर उदाहरण
l402.Middleware एक मानक http.Handler लौटाता है, इसलिए यह Chi के r.Handle के साथ सीधे काम करता है:
एरर कोड
| स्टेटस | अर्थ |
|---|---|
402 | कोई भुगतान टोकन नहीं — invoice का भुगतान करें |
401 | अमान्य टोकन या समाप्त macaroon |
401 | दोहराया गया टोकन (preimage पहले से उपयोग किया गया) |