التثبيت
Cargo.toml:
البدء السريع
أسرع طريقة تستخدمManagedProvider — لا حاجة إلى عقدة Lightning، رسوم 0.3%:
LightningProvider — راجع مزوّد مخصص أدناه.
مزوّد مخصص
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::middleware::Layer متوافقة مع axum 0.8+.
السلوك
| الطلب | الاستجابة |
|---|---|
لا يوجد ترويسة Authorization | 402 + WWW-Authenticate: L402 macaroon="...", invoice="lnbc..." |
L402 <macaroon>:<preimage> صالح | تنفيذ المعالج |
| رمز منتهي الصلاحية أو غير صالح | 401 Unauthorized |
| preimage مُعاد استخدامه | 401 Token already used |
جسم استجابة 402
دالة استدعاء on_payment
علامات الميزات
axum-middleware لاستخدام دوال التحقق الأساسية فقط دون axum أو reqwest:
التحقق
يتم التحقق منSHA256(preimage) == paymentHash محليًا باستخدام حزمة sha2 — دون أي استدعاء شبكي في المسار الرئيسي. يتم التحقق من انتهاء صلاحية الرمز في نفس العملية.
رموز الأخطاء
| الحالة | المعنى |
|---|---|
402 | لا يوجد رمز دفع — ادفع الفاتورة |
401 | رمز غير صالح أو macaroon منتهي الصلاحية |
401 | preimage مُعاد استخدامه (مستخدم مسبقًا) |