From f64923b472d67a2812c2d12ce98bd0435a089c53 Mon Sep 17 00:00:00 2001 From: f321x Date: Fri, 6 Mar 2026 14:42:42 +0100 Subject: [PATCH] plugin: nwc: lookup_invoice: fix exc, include b11 Fixes exception in lookup_invoice: ``` 62.69 | E | plugins.nwc.nwcserver.NWCServer | Error handling nwc request Traceback (most recent call last): File "/home/user/code/vibecoding_vm/electrum/electrum/plugins/nwc/nwcserver.py", line 381, in run_request_task await task File "/home/user/code/vibecoding_vm/electrum/electrum/util.py", line 1211, in wrapper return await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/code/vibecoding_vm/electrum/electrum/plugins/nwc/nwcserver.py", line 526, in handle_lookup_invoice info = self.wallet.lnworker.get_payment_info(invoice.payment_hash, direction=RECEIVED) ^^^^^^^^^^^^^^^^^^^^ AttributeError: 'Invoice' object has no attribute 'payment_hash' ``` Always includes bolt11 invoice in response, even if the client already sent it to us in the request. It doesn't seem useful and is marked optional in the spec but https://sandbox.albylabs.com considers the response invalid if the invoice is not included. --- electrum/plugins/nwc/nwcserver.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/electrum/plugins/nwc/nwcserver.py b/electrum/plugins/nwc/nwcserver.py index 2abffe77b..9e278d008 100644 --- a/electrum/plugins/nwc/nwcserver.py +++ b/electrum/plugins/nwc/nwcserver.py @@ -523,7 +523,7 @@ class NWCServer(Logger, EventListener): b11 = invoice.lightning_invoice elif self.wallet.get_request(invoice.rhash): direction = "incoming" - info = self.wallet.lnworker.get_payment_info(invoice.payment_hash, direction=RECEIVED) + info = self.wallet.lnworker.get_payment_info(bytes.fromhex(invoice.rhash), direction=RECEIVED) _, b11 = self.wallet.lnworker.get_bolt11_invoice( payment_info=info, message=invoice.message, @@ -539,11 +539,10 @@ class NWCServer(Logger, EventListener): "created_at": invoice.time, "expires_at": invoice.get_expiration_date(), "fees_paid": 0, + "invoice": b11, "metadata": {} } } - if payment_hash: # if client requested by payment hash we add the invoice - response['result']['invoice'] = b11 if nip47_status := self.invoice_status_to_nip47_state(status): response['result']['state'] = nip47_status