Fortgeschrittene, Technik

Howto: Auslösen von Webhooks bei Lightning-Zahlungen

HiP0 HiP0
HiP0
2 Minuten Lesedauer
Howto: Auslösen von Webhooks bei Lightning-Zahlungen
LNbits

Es gibt verschiedene Ansätze programmatisch auf die Bezahlung von Invoices zu reagieren. Nehmen wir an, unsere Anwendung soll eine Aktion ausführen, sobald eine Lighning-Rechnung bezahlt wurde. Ein denkbarer Weg wäre, nach der Erstellung einer Rechnung einfach den Status dieser Rechnung zu überwachen (via WebSocket oder Pooling) und bei Änderungen zu reagieren. Je nach Anwendungsfall ist die andere Möglichkeit die spannendere: Im Erfolgsfall eine Webhook-URL aufrufen lassen und die gewünschten (Re)Aktionen starten.

Einige Vorteile eines Webhook-Aufrufs:

  • Keine (zeitliche) Überwachung des Rechnungsstatus
  • Webhook-URL kann auf einem anderen Webserver liegen

Webhooks mit LNbits

Bei der Erstellung einer LN-Rechnung wird von LNbits eine Webhook-URL empfangen und der Rechnung zugewiesen. Wird eine solche Rechnung bezahlt, sendet LNbits einen POST-Request an den hinterlegten Webhook-Endpukt. Dabei sendet LNbits ein Objekt mit Zahlungsinformationen als Zugabe:

{
  "checking_id": "cc5d232...",
  "pending": true,
  "amount": 21000,
  "fee": 0,
  "memo": "LNbits",
  "time": 313761326,
  "bolt11": "lnbc1...",
  "preimage": "...",
  "payment_hash": "...",
  "expiry": 313761326,
  "extra": {},
  "wallet_id": "...",
  "webhook": "https://webhook.site/...",
  "webhook_status": null
}

Und so kann ein Webhook an die Rechnungsgenerierung angehängt werden:

curl -X POST https://legend.lnbits.com/api/v1/payments -d '{"out": false, "amount": 21, "webhook": "https://webhook.site/0f00f00f0"}' -H "X-Api-Key: 0f00f00f0" -H "Content-type: application/json"

Die URL deiner LNbits-Instanz und des gewünschten Webhooks muss angepasst werden. Dasselbe gilt für den "Invoice/Read Key". Das obige Curl-Kommando kann problemlos auf andere Technologien/Frameworks/"Sprachen" übertragen werden. Um den Empfang von Webhooks zu testen, bietet sich das Online-Tool https://webhook.site an. Übrigens: LNbits zeigt den Status des Webhook-Triggers in den Details einer Zahlung an.

Auf diese Art und Weise ist das Auslösen einer Kettenreaktion möglich: Rechnung bezahlt -> Aktion ausgeführt. Zum Beispiel: LN-Rechnung bezahlt -> ein per Webhook ausgelöstes Skript schaltet deine HUE-Lampe ein und/oder sendet eine Nachricht und/oder füttert Hünner. Die Nutzung des Dienstes IFTTT, der die Bereitstellung von Webhooks ermöglicht, ist ebenfalls denkbar.

value-4-value