Skip to content

Commit

Permalink
Working
Browse files Browse the repository at this point in the history
  • Loading branch information
arcbtc committed Mar 19, 2024
1 parent 0791226 commit eaa3263
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 13 deletions.
37 changes: 25 additions & 12 deletions lnurl.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
get_lnurldevicepayment_by_p,
update_lnurldevicepayment,
)

from fastapi.responses import JSONResponse


def xor_decrypt(key, blob):
Expand Down Expand Up @@ -128,7 +128,6 @@ async def lnurl_params(
for switch in device.switches:
if (
switch.pin == int(pin)
and switch.amount == float(amount)
and switch.duration == int(duration)
and bool(switch.variable) == bool(variable)
and bool(switch.comment) == bool(comment)
Expand All @@ -137,8 +136,7 @@ async def lnurl_params(
continue
if not check:
return {"status": "ERROR", "reason": "Switch params wrong"}
if comment:
duration = duration + "-" + comment

lnurldevicepayment = await create_lnurldevicepayment(
deviceid=device.id,
payload=duration,
Expand All @@ -151,7 +149,7 @@ async def lnurl_params(
resp = {
"tag": "payRequest",
"callback": str(request.url_for(
"lnurldevice.lnurl_callback", paymentid=lnurldevicepayment.id
"lnurldevice.lnurl_callback", paymentid=lnurldevicepayment.id, variable=variable
)),
"minSendable": price_msat,
"maxSendable": price_msat,
Expand All @@ -161,6 +159,7 @@ async def lnurl_params(
resp["commentAllowed"] = 1500
if variable == True:
resp["maxSendable"] = price_msat * 360
logger.debug(resp)
return resp

if len(p) % 4 > 0:
Expand Down Expand Up @@ -231,13 +230,16 @@ async def lnurl_params(


@lnurldevice_ext.get(
"/api/v1/lnurl/cb/{paymentid}",
"/api/v1/lnurl/cb/{paymentid}/{variable}",
status_code=HTTPStatus.OK,
name="lnurldevice.lnurl_callback",
)
async def lnurl_callback(
request: Request,
paymentid: str,
variable: str,
amount: int = Query(None),
comment: str = Query(None),
pr: str = Query(None),
k1: str = Query(None),
):
Expand Down Expand Up @@ -285,24 +287,35 @@ async def lnurl_callback(
if device.device == "switch":
payment_hash, payment_request = await create_invoice(
wallet_id=device.wallet,
amount=int(lnurldevicepayment.sats / 1000),
amount=int(amount / 1000),
memo=f"{device.id} pin {lnurldevicepayment.pin} ({lnurldevicepayment.payload} ms)",
unhashed_description=device.lnurlpay_metadata.encode(),
extra={
"tag": "Switch",
"pin": str(lnurldevicepayment.pin),
"amount": str(lnurldevicepayment.payload),
"amount": amount,
"comment": comment,
"variable": variable,
"id": paymentid,
},
)
logger.debug(bolt11.decode(payment_request))

lnurldevicepayment = await update_lnurldevicepayment(
lnurldevicepayment_id=paymentid, payhash=payment_hash
)
return {
"pr": payment_request,
"routes": [],
}
resp = JSONResponse(
{
"pr": payment_request,
"successAction": {
"tag": "text",
"description": f"{int(amount / 1000)}sats sent"
},
"routes": [],
}
)

return resp

payment_hash, payment_request = await create_invoice(
wallet_id=device.wallet,
Expand Down
12 changes: 11 additions & 1 deletion tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from lnbits.tasks import register_invoice_listener

from .crud import get_lnurldevicepayment, update_lnurldevicepayment

from loguru import logger

async def wait_for_paid_invoices():
invoice_queue = asyncio.Queue()
Expand All @@ -30,6 +30,16 @@ async def on_invoice_paid(payment: Payment) -> None:
lnurldevicepayment = await update_lnurldevicepayment(
lnurldevicepayment_id=payment.extra["id"], payhash="used"
)
comment = payment.extra["comment"]
payload = lnurldevicepayment.payload
if payload:
payload = int(payload) * int(lnurldevicepayment.sats)

if comment:
return await websocketUpdater(
lnurldevicepayment.deviceid,
f"{lnurldevicepayment.pin}-{payload}-{comment}",
)
return await websocketUpdater(
lnurldevicepayment.deviceid,
f"{lnurldevicepayment.pin}-{lnurldevicepayment.payload}",
Expand Down

0 comments on commit eaa3263

Please sign in to comment.