import { BTCPayProvider } from 'l402-kit';const lightning = new BTCPayProvider( process.env.BTCPAY_URL!, // https://your-btcpay.com process.env.BTCPAY_API_KEY!, // store API key process.env.BTCPAY_STORE_ID!, // store ID);
import { OpenNodeProvider } from 'l402-kit';const lightning = new OpenNodeProvider( process.env.OPENNODE_API_KEY!, false, // testMode — sandbox के लिए true करें);
l402kit.com Lightning node होस्ट करता है। आपको प्रत्येक भुगतान का 99.7% प्राप्त होता है। स्पष्ट opt-in।
import { ManagedProvider } from 'l402-kit';const lightning = ManagedProvider.fromAddress('you@yourdomain.com');// वैकल्पिक: सार्वजनिक API directory में auto-register करेंconst lightning = ManagedProvider.fromAddress('you@yourdomain.com', { registerDirectory: { url: 'https://api.you.com/v1/data', name: 'My Data API', priceSats: 10, category: 'data', // data | ai | finance | weather | compute | storage | other description: 'Optional', },});
Registration startup पर एक बार होती है (fire-and-forget, त्रुटियाँ silent रहती हैं)। API l402kit.com/apis.json पर दिखाई देती है ताकि agents इसे स्वतः खोज सकें।
भुगतान स्वचालित रूप से लॉग करने के लिए अपने environment में SUPABASE_URL + SUPABASE_ANON_KEY सेट करें।
app.get('/api', l402({ priceSats: 10, lightning }), handler);// SUPABASE_URL और SUPABASE_ANON_KEY स्वचालित रूप से process.env से पढ़े जाते हैं
Payments table schema (payments):
create table payments ( id uuid primary key default gen_random_uuid(), payment_hash text unique not null, -- SHA256(preimage) — store करना सुरक्षित endpoint text, amount_sats integer, paid_at timestamptz default now());
payment_hash में SHA256(preimage) संग्रहीत होता है, raw preimage नहीं। preimage 32-byte Lightning payment secret है — इसका hash BOLT11 invoice में पहले से सार्वजनिक है।
Token सत्यापन memory में SHA256(preimage) == paymentHash चलाता है — sub-millisecond, hot path पर कोई network call नहीं।in-memory ReplayAdapter (डिफ़ॉल्ट) भी synchronously चलता है। यदि आप RedisReplayAdapter उपयोग करते हैं, तो प्रति अनुरोध 5–50 ms Redis round-trip जोड़ें। उच्च-आवृत्ति endpoints के लिए क्षमता की योजना तदनुसार बनाएं।
middleware चुपचाप X-Payment header स्वीकार करता है (Coinbase के x402 protocol द्वारा उपयोग किया जाता है) मानक Authorization: L402 … header के अतिरिक्त। दोनों को समान रूप से संभाला जाता है — उपयोगी यदि आप उन clients को serve करना चाहते हैं जो किसी भी protocol में बात करते हैं।
// x402 header का उपयोग करने वाला Client — पारदर्शी रूप से संभाला जाता है// X-Payment: <macaroon>:<preimage>