From c24d2f24cfed41322c818b450f0fd18b0c25eda2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Mon, 18 Aug 2025 09:18:11 +0200 Subject: [PATCH] fix: bump lnurl its not callback_url now, its just url (#3312) --- lnbits/core/services/lnurl.py | 10 +++++++--- lnbits/core/views/lnurl_api.py | 8 ++++---- poetry.lock | 8 ++++---- pyproject.toml | 2 +- tests/api/test_api.py | 1 - 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lnbits/core/services/lnurl.py b/lnbits/core/services/lnurl.py index c193573d..9ca94957 100644 --- a/lnbits/core/services/lnurl.py +++ b/lnbits/core/services/lnurl.py @@ -12,7 +12,9 @@ from lnbits.settings import settings from lnbits.utils.exchange_rates import fiat_amount_as_satoshis -async def get_pr_from_lnurl(lnurl: str, amount_msat: int) -> str: +async def get_pr_from_lnurl( + lnurl: str, amount_msat: int, comment: str | None = None +) -> str: res = await handle(lnurl, user_agent=settings.user_agent, timeout=10) if isinstance(res, LnurlErrorResponse): raise LnurlResponseException(res.reason) @@ -22,7 +24,8 @@ async def get_pr_from_lnurl(lnurl: str, amount_msat: int) -> str: ) res2 = await execute_pay_request( res, - msat=str(amount_msat), + msat=amount_msat, + comment=comment, user_agent=settings.user_agent, timeout=10, ) @@ -48,7 +51,8 @@ async def fetch_lnurl_pay_request(data: CreateLnurlPayment) -> LnurlPayActionRes return await execute_pay_request( data.res, - msat=str(amount_msat), + msat=amount_msat, + comment=data.comment, user_agent=settings.user_agent, timeout=10, ) diff --git a/lnbits/core/views/lnurl_api.py b/lnbits/core/views/lnurl_api.py index 76614f3a..b9196d61 100644 --- a/lnbits/core/views/lnurl_api.py +++ b/lnbits/core/views/lnurl_api.py @@ -134,12 +134,12 @@ async def api_payment_pay_with_nfc( payment_request: str, lnurl_data: CreateLnurlWithdraw, ) -> LnurlErrorResponse | LnurlSuccessResponse: + if not lnurl_data.lnurl_w.lud17: + return LnurlErrorResponse(reason="LNURL-withdraw lud17 not provided.") try: - res = await lnurl_handle( - lnurl_data.lnurl_w.callback_url, user_agent=settings.user_agent, timeout=10 - ) + url = lnurl_data.lnurl_w.lud17 + res = await lnurl_handle(url, user_agent=settings.user_agent, timeout=10) except (LnurlResponseException, Exception) as exc: - logger.warning(exc) return LnurlErrorResponse(reason=str(exc)) if not isinstance(res, LnurlWithdrawResponse): diff --git a/poetry.lock b/poetry.lock index 3aeacd05..f95b1dc7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2133,14 +2133,14 @@ valkey = ["valkey (>=6)"] [[package]] name = "lnurl" -version = "0.6.8" +version = "0.7.2" description = "LNURL implementation for Python." optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "lnurl-0.6.8-py3-none-any.whl", hash = "sha256:4fff53efcdd401cf4169676bd1ab85e9e241a762a9a5407ee11e6a6e120e8279"}, - {file = "lnurl-0.6.8.tar.gz", hash = "sha256:de64a47179980a4b52cd6b89ad377cda14502f1998f53724490683f6f5c4ed90"}, + {file = "lnurl-0.7.2-py3-none-any.whl", hash = "sha256:4323ac398d49e5b883000c166b4c2448df2acad2eddca99f656c67f7b97cd80f"}, + {file = "lnurl-0.7.2.tar.gz", hash = "sha256:9f0881cb5909512cadb35d238c27347d6a8afcec10b2b7aadd560083fd210c0b"}, ] [package.dependencies] @@ -4573,4 +4573,4 @@ migration = ["psycopg2-binary"] [metadata] lock-version = "2.1" python-versions = "~3.12 | ~3.11 | ~3.10" -content-hash = "c1714a4df0e8f7d8702fffe9c57b21fc39effb194631741b4718466c18b73d8f" +content-hash = "7100b67d94f82cb53ceb8f4e47ae8a4aa426408feabeb0746c323d09f229c242" diff --git a/pyproject.toml b/pyproject.toml index ae0592aa..5dd7ac2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ fastapi = "0.116.1" starlette = "0.47.1" httpx = "0.27.0" jinja2 = "3.1.6" -lnurl = "0.6.8" +lnurl = "0.7.2" pydantic = "1.10.22" pyqrcode = "1.2.1" shortuuid = "1.0.13" diff --git a/tests/api/test_api.py b/tests/api/test_api.py index 53bd7eb5..b4dbffac 100644 --- a/tests/api/test_api.py +++ b/tests/api/test_api.py @@ -623,7 +623,6 @@ async def test_fiat_tracking(client, adminkey_headers_from, settings: Settings): { "tag": "payRequest", "callback": "https://example.com/callback", - "k1": "randomk1value", "minSendable": 1000, "maxSendable": 1_500_000, "metadata": '[["text/plain", "Payment to yo"]]',