diff --git a/lnbits/wallets/lndgrpc.py b/lnbits/wallets/lndgrpc.py index b448bf34c..6b9e9b2fe 100644 --- a/lnbits/wallets/lndgrpc.py +++ b/lnbits/wallets/lndgrpc.py @@ -1,9 +1,11 @@ from os import getenv +import os +import base64 import lnd_grpc # https://github.com/willcl-ark/lnd_grpc/blob/master/lnd_grpc/lightning.py from .base import InvoiceResponse, PaymentResponse, PaymentStatus, Wallet -class LndWalletgrpc(Wallet): +class LndWallet(Wallet): """https://api.lightning.community/rest/index.html#lnd-rest-api-reference""" def __init__(self): @@ -11,10 +13,10 @@ class LndWalletgrpc(Wallet): endpoint = getenv("LND_GRPC_ENDPOINT") self.endpoint = endpoint[:-1] if endpoint.endswith("/") else endpoint self.port = getenv("LND_GRPC_PORT") - self.auth_admin = getenv("LND_ADMIN_MACAROON") - self.auth_invoice = getenv("LND_INVOICE_MACAROON") - self.auth_read = getenv("LND_READ_MACAROON") - self.auth_cert = getenv("LND_CERT") + self.auth_admin = os.path.expanduser("~/")+(getenv("LND_ADMIN_MACAROON")) + self.auth_invoice = os.path.expanduser("~/")+(getenv("LND_INVOICE_MACAROON")) + self.auth_read = os.path.expanduser("~/")+(getenv("LND_READ_MACAROON")) + self.auth_cert = os.path.expanduser("~/")+(getenv("LND_CERT")) def create_invoice(self, amount: int, mem: str = "") -> InvoiceResponse: @@ -28,14 +30,14 @@ class LndWalletgrpc(Wallet): ) lndResponse = lnd_rpc.add_invoice( - memo = mem, - value = amount, + memo = "mem", + value = 20, expiry = 600, private = True ) - - ok, checking_id, payment_request, error_message = True, lndResponse.r_hash, lndResponse.payment_request, None - + decoded_hash = base64.b64encode(lndResponse.r_hash).decode('utf-8').replace("/","_") + print(lndResponse.r_hash) + ok, checking_id, payment_request, error_message = True, decoded_hash, str(lndResponse.payment_request), None return InvoiceResponse(ok, checking_id, payment_request, error_message) def pay_invoice(self, bolt11: str) -> PaymentResponse: @@ -50,7 +52,7 @@ class LndWalletgrpc(Wallet): ) payinvoice = lnd_rpc.pay_invoice( # https://github.com/willcl-ark/lnd_grpc/blob/cf938c51c201f078e8bbe9e19ffc2d038f3abf7f/lnd_grpc/lightning.py#L439 - payment_request = _payreq, + payment_request = bolt11, ) ok, checking_id, fee_msat, error_message = True, None, 0, None @@ -58,12 +60,14 @@ class LndWalletgrpc(Wallet): if payinvoice.payment_error: ok, error_message = False, payinvoice.payment_error else: - checking_id = payinvoice.payment_hash + checking_id = base64.b64encode(payinvoice.payment_hash).decode('utf-8').replace("/","_") return PaymentResponse(ok, checking_id, fee_msat, error_message) def get_invoice_status(self, checking_id: str) -> PaymentStatus: - + + check_id = base64.b64decode(checking_id.replace("_","/")) + print(check_id) lnd_rpc = lnd_grpc.Client( lnd_dir = None, macaroon_path = self.auth_invoice, @@ -73,16 +77,15 @@ class LndWalletgrpc(Wallet): grpc_port = self.port ) - for _response in lnd_rpc.subscribe_single_invoice(_hash): - # myQueue.put(_response) # ??? + for _response in lnd_rpc.subscribe_single_invoice(check_id): if _response.state == 1: - return PaymentStatus("settled") + return PaymentStatus(True) invoiceThread = threading.Thread( target=detectPayment, - args=[lndResponse.r_hash, ], + args=[lndResponse.check_id, ], daemon=True ) invoiceThread.start()