التثبيت
البدء السريع
وضع الاستضافة الذاتية (أحضر مزودك الخاص)
l402.Options
| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
PriceSats | int | مطلوب | السعر لكل استدعاء بالـ satoshis |
Lightning | LightningProvider | مطلوب | واجهة Lightning الخلفية الخاصة بك (استخدم NewBlinkProvider) |
OnPayment | func(L402Token, int) | — | دالة رد نداء تُشغَّل بعد كل دفعة تم التحقق منها |
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
التحقق
يتم التحقق منSHA256(preimage) == paymentHash محلياً في الذاكرة — أقل من ميلي ثانية، بدون استدعاء شبكة على المسار الحرج. يُفحص انتهاء صلاحية الرمز (الحقل exp في الـ macaroon) في نفس العملية.
يستخدم حارس إعادة التشغيل خريطة في الذاكرة افتراضياً (آمنة لعملية واحدة). لعمليات النشر متعددة النسخ، استخدم مخزناً مشتركاً (Redis أو ما شابه) — مما يُضيف 5–50 مللي ثانية زمن ذهاب وإياب لكل طلب تم التحقق منه.
مثال على موجّه Chi
يُعيدl402.Middleware معالج http.Handler قياسياً، لذا يعمل مباشرةً مع r.Handle في Chi:
رموز الأخطاء
| الحالة | المعنى |
|---|---|
402 | لا يوجد رمز دفع — ادفع الفاتورة |
401 | رمز غير صالح أو macaroon منتهي الصلاحية |
401 | رمز مُعاد استخدامه (preimage مستخدم مسبقاً) |