diff --git a/__pycache__/lnurl.cpython-39.pyc b/__pycache__/lnurl.cpython-39.pyc index 4e309d6..6a0724b 100644 Binary files a/__pycache__/lnurl.cpython-39.pyc and b/__pycache__/lnurl.cpython-39.pyc differ diff --git a/__pycache__/migrations.cpython-39.pyc b/__pycache__/migrations.cpython-39.pyc index eb1535d..c97d109 100644 Binary files a/__pycache__/migrations.cpython-39.pyc and b/__pycache__/migrations.cpython-39.pyc differ diff --git a/__pycache__/models.cpython-39.pyc b/__pycache__/models.cpython-39.pyc index 8830466..e21338f 100644 Binary files a/__pycache__/models.cpython-39.pyc and b/__pycache__/models.cpython-39.pyc differ diff --git a/__pycache__/tasks.cpython-39.pyc b/__pycache__/tasks.cpython-39.pyc index 3dfb88c..9b32097 100644 Binary files a/__pycache__/tasks.cpython-39.pyc and b/__pycache__/tasks.cpython-39.pyc differ diff --git a/lnurl.py b/lnurl.py index e4a6558..0f6fff9 100644 --- a/lnurl.py +++ b/lnurl.py @@ -6,10 +6,11 @@ from http import HTTPStatus from fastapi import Depends, Query, Request from . import myextension_ext from .crud import get_myextension -from lnbits.core.services import create_invoice +from lnbits.core.services import create_invoice, pay_invoice from loguru import logger -from uuid import UUID from typing import Optional +from .crud import update_myextension +import shortuuid ################################################# ########### A very simple LNURLpay ############## @@ -91,17 +92,11 @@ async def api_lnurl_pay( myextension = await get_myextension(myextension_id) if not myextension: return {"status": "ERROR", "reason": "No myextension found"} - k1 = UUID(myextension_id + str(myextension.ticker), version=4) - data_to_update = { - "ticker": myextension.ticker + 1 - } - - await update_myextension(myextension_id=myextension_id, **data_to_update) - + k1 = shortuuid.uuid(name=myextension.id + str(myextension.ticker)) return { "callback": str(request.url_for("myextension.api_lnurl_withdraw_callback", myextension_id=myextension_id)), - "maxSendable": myextension.lnurlwithdrawamount, - "minSendable": myextension.lnurlwithdrawamount, + "maxSendable": myextension.lnurlwithdrawamount * 1000, + "minSendable": myextension.lnurlwithdrawamount * 1000, "k1": k1, "defaultDescription": myextension.name, "metadata":f"[[\"text/plain\", \"{myextension.name}\"]]", @@ -109,7 +104,7 @@ async def api_lnurl_pay( } @myextension_ext.get( - "/api/v1/lnurl/pay/cb/{myextension_id}", + "/api/v1/lnurl/withdraw/cb/{myextension_id}", status_code=HTTPStatus.OK, name="myextension.api_lnurl_withdraw_callback", ) @@ -126,18 +121,13 @@ async def api_lnurl_withdraw_cb( if not myextension: return {"status": "ERROR", "reason": "No myextension found"} - k1Check = UUID(myextension_id + str(myextension.ticker - 1), version=4) + k1Check = shortuuid.uuid(name=myextension.id + str(myextension.ticker - 1)) if k1Check != k1: return {"status": "ERROR", "reason": "Already spent"} - try: - await pay_invoice( - wallet_id=tpos.wallet, - payment_request=pr, - max_sat=myextension.lnurlwithdrawamount * 1000, - extra={"tag": "MyExtension", "myextensionId": myextension_id,} - ) - except Exception as e: - raise HTTPException( - status_code=HTTPStatus.BAD_REQUEST, detail=f"withdraw not working. {str(e)}" - ) + await pay_invoice( + wallet_id=myextension.wallet, + payment_request=pr, + max_sat=int(myextension.lnurlwithdrawamount * 1000), + extra={"tag": "MyExtension", "myextensionId": myextension_id,} + ) return {"status": "OK"} diff --git a/models.py b/models.py index 513fe77..39cec07 100644 --- a/models.py +++ b/models.py @@ -15,6 +15,7 @@ class CreateMyExtensionData(BaseModel): total: Optional[int] lnurlpayamount: Optional[int] lnurlwithdrawamount: Optional[int] + ticker: Optional[int] class MyExtension(BaseModel): id: str @@ -25,6 +26,7 @@ class MyExtension(BaseModel): lnurlwithdrawamount: Optional[int] lnurlpay: Optional[str] lnurlwithdraw: Optional[str] + ticker: Optional[int] @classmethod def from_row(cls, row: Row) -> "MyExtension": diff --git a/tasks.py b/tasks.py index 001108b..8231f48 100644 --- a/tasks.py +++ b/tasks.py @@ -3,7 +3,7 @@ import asyncio from loguru import logger from lnbits.core.models import Payment -from lnbits.core.services import create_invoice, pay_invoice, websocketUpdater +from lnbits.core.services import create_invoice, websocketUpdater from lnbits.helpers import get_current_extension_name from lnbits.tasks import register_invoice_listener