इंस्टॉलेशन
Cargo.toml में:
क्विकस्टार्ट
सबसे तेज़ तरीकाManagedProvider का उपयोग करना है — कोई Lightning node की ज़रूरत नहीं, 0.3% शुल्क:
LightningProvider trait लागू करें — नीचे कस्टम प्रोवाइडर देखें।
कस्टम प्रोवाइडर
Options
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
price_sats | u64 | प्रति कॉल मूल्य satoshis में (आवश्यक) |
lightning | Arc<dyn LightningProvider> | आपका Lightning बैकएंड (आवश्यक) |
on_payment | Option<Box<dyn Fn(L402Token, u64)>> | प्रत्येक सत्यापित भुगतान के बाद चलने वाला कॉलबैक |
पुराना: with_address()
Options::with_address(address) को v1.4.0 में हटा दिया गया था। इसके बजाय Options::new(sats, ManagedProvider::new(address)) का उपयोग करें:
l402_middleware(opts: Options)
axum 0.8+ के साथ संगत एक axum::middleware::Layer लौटाता है।
व्यवहार
| अनुरोध | प्रतिक्रिया |
|---|---|
कोई Authorization हेडर नहीं | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
मान्य L402 <macaroon>:<preimage> | हैंडलर निष्पादित होता है |
| अमान्य या समाप्त टोकन | 401 Unauthorized |
| पुनः उपयोग किया गया preimage | 401 Token already used |
402 प्रतिक्रिया बॉडी
on_payment कॉलबैक
फीचर फ्लैग्स
axum-middleware को अक्षम करें:
सत्यापन
SHA256(preimage) == paymentHash को sha2 crate का उपयोग करके स्थानीय रूप से सत्यापित किया जाता है — हॉट पाथ पर कोई नेटवर्क कॉल नहीं। टोकन समाप्ति की जांच उसी ऑपरेशन में की जाती है।
एरर कोड
| स्टेटस | अर्थ |
|---|---|
402 | कोई भुगतान टोकन नहीं — invoice का भुगतान करें |
401 | अमान्य टोकन या समाप्त macaroon |
401 | पुनः उपयोग किया गया preimage (पहले से उपयोग हो चुका) |