שילוב LNURL מלא לתשלומי Lightning

שילוב LNURL מלא לתשלומי Lightning ניסיון לקבל תשלום Lightning ללא LNURL פירושו תהליך של חמישה שלבים של העתקה והדבקה, כאשר כל שלב מסכן את אובדן הלקוח. המשתמש חייב להעתיק חשבונית מארנק הסוחר, לעבור לארנק שלו, להדביק ולשלם. בפועל

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1451
  • image_web-applications_feedme_466_0.webp
    פיתוח אפליקציית ווב עבור FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    פיתוח אתר עבור BELFINGROUP
    1005
  • image_ecommerce_furnoro_435_0.webp
    פיתוח חנות מקוונת לחברת FURNORO
    1270
  • image_logo-advance_0.webp
    עיצוב לוגו לחברת B2B Advance
    719
  • image_crm_enviok_479_0.webp
    פיתוח אפליקציית ווב עבור Enviok
    1011

אינטגרציית LNURL מלאה לתשלומי Lightning

ניסיון לקבל תשלום Lightning ללא LNURL פירושו תהליך של חמישה שלבים של העתקה והדבקה, כאשר כל שלב מסכן את אובדן הלקוח. המשתמש חייב להעתיק חשבונית מארנק הסוחר, לעבור לארנק שלו, להדביק ולשלם. בפועל, זה גוזל עד 30% מההמרה. אינטגרציית LNURL מבטלת את החיכוך הזה: הארנק מבקש אוטומטית את החשבונית באמצעות HTTP, ודורש רק סריקת QR אחת. חוויית המשתמש מתקרבת לזו של מערכות תשלום קונבנציונליות.

הצוות שלנו מיישם פתרונות LNURL מקצה לקצה: מהגדרת צומת ועד אימוץ Lightning Address. עם ניסיון של למעלה מ-7 שנים בפיתוח Lightning ו-20+ אינטגרציות מוצלחות, אנו צופים מראש מלכודות טיפוסיות—מבעיות נזילות ועד שגיאות תצורת TLS.

למה לבחור באינטגרציית LNURL?

LNURL משפרת באופן דרמטי את חוויית המשתמש. השוו: תשלום Lightning רגיל דורש העתקת חשבונית (מחרוזת ארוכה), מעבר לארנק, הדבקה ותשלום. עם LNURL—רק סריקת QR אחת או לחיצה על קישור. זה מפחית את שיעורי הנטישה ב-30–40% לפי הנתונים שלנו, וזמן התשלום הממוצע יורד מ-40 שניות ל-5—כלומר פי 8 מהר יותר.

יתר על כן, LNURL-pay נותן לך שליטה על המחיר: אתה קובע minSendable ו-maxSendable, ויכול להתאים את הסכום לאחר הסריקה. ועם Lightning Address, המשתמש פשוט מזין [email protected]—ללא צורך ב-QR. בהשוואה לתהליך הידני, LNURL-pay משפר את חוויית המשתמש פי 2.5.

אילו פרוטוקולים הם חלק מ-LNURL?

LNURL אינו פרוטוקול יחיד אלא מספר מפרטים (LUD—הגדרות Lightning URL). כל אחד פותר משימה ספציפית:

LUD פרוטוקול מטרה
LUD-01 LNURL-pay תשלום: הארנק מבקש חשבונית משרת הסוחר
LUD-03 LNURL-withdraw משיכה: הארנק מקבל כספים דרך קישור
LUD-04 LNURL-auth אימות באמצעות מפתח Lightning (התחברות ללא סיסמה)
LUD-06 LNURL-channel פתיחת ערוץ
LUD-12 Lightning Address פורמט [email protected] עבור LNURL-pay

לקבלת תשלומים, LNURL-pay ו-Lightning Address הם החשובים ביותר.

איך LNURL-pay עובד

התהליך כולו כולל שתי בקשות HTTP בין הארנק לשרת:

  1. המשתמש סורק QR. הארנק רואה lnurl1... (כתובת HTTPS מקודדת bech32). הארנק מפענח אותה ומבצע GET לכתובת זו.
  2. השרת מחזיר מטא-דאטה:
{ "tag": "payRequest", "callback": "https://merchant.com/lnurl/pay/invoice", "minSendable": 1000, "maxSendable": 100000000, "metadata": "[[\"text/plain\",\"Payment to My Shop\"]]" } 
  1. המשתמש מזין סכום. הארנק מבצע GET ל-callback עם פרמטר { "tag": "payRequest", "callback": "https://merchant.com/lnurl/pay/invoice", "minSendable": 1000, "maxSendable": 100000000, "metadata": "[[\"text/plain\",\"Payment to My Shop\"]]" } (במיליסאטושי).
  2. השרת יוצר חשבונית Lightning דרך צומת ה-LN שלו ומחזיר:
{ "pr": "lnbc100n1pj...", "routes": [], "successAction": { "tag": "message", "message": "Payment confirmed! Order #12345" } } 
  1. הארנק משלם את החשבונית. לאחר תשלום מוצלח, הוא מציג את amount.

אלה רק חמישה שלבים—פי שלושה פחות מהזנת חשבונית ידנית.

איך ליישם שרת LNURL-pay

אתה צריך צומת Lightning (LND או Core Lightning) כדי ליצור חשבוניות. דוגמה ב-Node.js עם LND דרך gRPC:

import express from 'express'; import * as grpc from '@grpc/grpc-js'; import * as protoLoader from '@grpc/proto-loader'; import { bech32 } from 'bech32'; const app = express(); // LNURL-pay шаг 1: metadata app.get('/lnurl/pay/:paymentId', async (req, res) => { const { paymentId } = req.params; const callbackUrl = `https://${req.hostname}/lnurl/pay/${paymentId}/invoice`; // Кодируем URL в lnurl bech32 (для QR кода) const lnurlEncoded = encodeLnurl(callbackUrl); res.json({ tag: 'payRequest', callback: callbackUrl, minSendable: 1000, maxSendable: 100_000_000, metadata: JSON.stringify([ ['text/plain', `Payment for order ${paymentId}`], ]), }); }); // LNURL-pay шаг 2: генерация invoice app.get('/lnurl/pay/:paymentId/invoice', async (req, res) => { const { paymentId } = req.params; const amountMsat = parseInt(req.query.amount as string); if (!amountMsat || amountMsat < 1000) { return res.status(400).json({ status: 'ERROR', reason: 'Invalid amount' }); } try { const invoice = await lndClient.addInvoice({ value_msat: amountMsat, memo: `Order ${paymentId}`, expiry: 3600, }); await db.saveInvoice({ paymentHash: invoice.r_hash, paymentId, amountMsat, }); res.json({ pr: invoice.payment_request, routes: [], successAction: { tag: 'message', message: `Order ${paymentId} confirmed!`, }, }); } catch (err) { res.status(500).json({ status: 'ERROR', reason: 'Failed to generate invoice' }); } }); function encodeLnurl(url: string): string { const words = bech32.toWords(Buffer.from(url, 'utf8')); return bech32.encode('lnurl', words, 1023).toUpperCase(); } 

הקוד הזה הוא הבסיס. בייצור, אנו מוסיפים אימות, רישום ואיזון עומסים.

Lightning Address: [email protected]

Lightning Address (LUD-12) מציע את חוויית המשתמש הנוחה ביותר. במקום קוד QR, המשתמש מזין כתובת כמו אימייל. הארנק מבקש אוטומטית { "pr": "lnbc100n1pj...", "routes": [], "successAction": { "tag": "message", "message": "Payment confirmed! Order #12345" } } .

app.get('/.well-known/lnurlp/:username', async (req, res) => { const { username } = req.params; const user = await db.getUserByLnAddress(username); if (!user) { return res.status(404).json({ status: 'ERROR', reason: 'User not found' }); } res.json({ tag: 'payRequest', callback: `https://${req.hostname}/lnurl/lightning-address/${username}`, minSendable: 1000, maxSendable: 10_000_000_000, metadata: JSON.stringify([ ['text/identifier', `${username}@${req.hostname}`], ['text/plain', `Payment to ${username}`], ]), commentAllowed: 144, }); }); 

לאחר מכן, successAction עובד כ-Lightning Address בכל ארנק תואם (Phoenix, Wallet of Satoshi, Zeus, Breez).

LNURL-auth: התחברות ללא סיסמה

LNURL-auth מאפשר למשתמשים להתחבר דרך ארנק ה-Lightning שלהם ללא סיסמה. הארנק חותם על אתגר עם מפתח פרטי הנגזר מזרע ה-Lightning.

import crypto from 'crypto'; app.get('/auth/lnurl', (req, res) => { const k1 = crypto.randomBytes(32).toString('hex'); redis.setex(`lnurl_auth:${k1}`, 300, 'pending'); const lnurlAuthUrl = `https://${req.hostname}/auth/callback?tag=login&k1=${k1}`; const encoded = encodeLnurl(lnurlAuthUrl); res.json({ lnurl: encoded, k1 }); }); app.get('/auth/callback', async (req, res) => { const { k1, sig, key } = req.query as Record<string, string>; const status = await redis.get(`lnurl_auth:${k1}`); if (!status) { return res.json({ status: 'ERROR', reason: 'Unknown k1' }); } const isValid = verifyLnurlAuthSignature(k1, sig, key); if (!isValid) { return res.json({ status: 'ERROR', reason: 'Invalid signature' }); } await redis.setex(`lnurl_auth:${k1}`, 300, `authenticated:${key}`); res.json({ status: 'OK' }); }); 

הפרונטאנד בודק את הסטטוס של k1—ברגע שהארנק חותם, המשתמש מחובר.

דרישות תשתית ל-LNURL

צומת Lightning הוא חובה. אפשרויות: LND (Go, API gRPC), Core Lightning (C, UNIX socket + REST), Eclair (Scala, בשימוש Acinq/Phoenix). לייצור: VPS ייעודי עם 4GB+ RAM, SSD ואינטרנט יציב. הצומת חייב להיות בעל נזילות נכנסת כדי לקבל תשלומים.

פתרונות מתארחים להתחלה מהירה: Voltage.cloud (LND מנוהל), Alby Hub (אחסון עצמי), Strike API (נאמנות). לנפחי ייצור רציניים, אנו ממליצים רק על צומת משלך.

TLS ודומיין נדרשים: LNURL דורש HTTPS. תעודה בחתימה עצמית לא תעבוד—אתה צריך Let's Encrypt או דומה.

ניטור: יתרת ערוץ (התראה כאשר נזילות נכנסת יורדת מתחת ל-10%), פקיעת חשבונית, ניסיונות תשלום כושלים. LND Metrics מייצא מדדים תואמי Prometheus ישירות מהקופסה.

מה כלול בעבודת האינטגרציה

שלב תוצאה
אנליטיקה עיצוב ארכיטקטורה, בחירת צומת (LND/CLN), תוכנית הגירה
הגדרת צומת התקנה, תצורת TLS, פתיחת ערוצים, גיבוי
פיתוח API נקודות קצה של LNURL-pay, Lightning Address, LNURL-auth
אינטגרציית אתר חיבור לתשלום, הגדרת callbacks ו-successAction
בדיקות בדיקות אוטומטיות עם regtest, אימות testnet, בדיקות עומס
תיעוד והדרכה README עם דוגמאות, הדרכה לצוות שלך

אנו גם מספקים חודש אחד של תמיכה לאחר ההשקה.

לפי מפרט LNURL, הפרוטוקול תומך ביותר מ-10 תקני LUD. אנו מיישמים את כל הדרושים.

לצוות שלנו ניסיון של 7+ שנים בפיתוח Lightning Network והשלים 20+ אינטגרציות LNURL. אנו מבטיחים תהליך אינטגרציה חלק עם שיטות עבודה מומלצות מוסמכות. צור קשר לייעוץ מהימן—נספק פתרון מותאם אישית והצעת מחיר מפורטת. השקעה טיפוסית: $2,000-$5,000 בהתאם למורכבות. קבל ייעוץ מהנדס—פנה אלינו.