added simple lnurl
This commit is contained in:
parent
2261bb8452
commit
c87ccf7107
11 changed files with 154 additions and 39 deletions
115
lnurl.py
115
lnurl.py
|
|
@ -1 +1,114 @@
|
|||
# Maybe your extensions needs some LNURL stuff, for anything LNURL always make sure you are on spec https://github.com/lnurl/luds
|
||||
# Maybe your extensions needs some LNURL stuff, if so checkout LNURLp/LNURLw extensions/lnurl library in LNbits (to keep things simple the below examples are raw LNURLs)
|
||||
|
||||
|
||||
from http import HTTPStatus
|
||||
from fastapi import Depends, Query, Request
|
||||
from . import temp_ext
|
||||
from .crud import get_temp
|
||||
from lnbits.core.services import create_invoice
|
||||
|
||||
|
||||
#################################################
|
||||
########### A very simple LNURLpay ##############
|
||||
# https://github.com/lnurl/luds/blob/luds/06.md #
|
||||
#################################################
|
||||
#################################################
|
||||
|
||||
@temp_ext.get(
|
||||
"/api/v1/lnurl/pay/{temp_id}", status_code=HTTPStatus.OK
|
||||
)
|
||||
async def api_lnurl_pay(
|
||||
request: Request,
|
||||
temp_id: str,
|
||||
):
|
||||
temp = await get_temp(temp_id)
|
||||
if not temp:
|
||||
return {"status": "ERROR", "reason": "No temp found"}
|
||||
return {
|
||||
"callback": str(request.url_for("temp.api_lnurl_pay_callback", temp_id=temp_id)),
|
||||
"maxSendable": temp.lnurlpayamount,
|
||||
"minSendable": temp.lnurlpayamount,
|
||||
"metadata":"[[\"text/plain\", \"" + temp.name + "\"]]",
|
||||
"tag": "payRequest"
|
||||
}
|
||||
|
||||
@temp_ext.get(
|
||||
"/api/v1/lnurl/pay/cb/{temp_id}",
|
||||
status_code=HTTPStatus.OK,
|
||||
name="temp.api_lnurl_pay_callback",
|
||||
)
|
||||
async def api_lnurl_pay_cb(
|
||||
request: Request,
|
||||
temp_id: str,
|
||||
amount: int = Query(...),
|
||||
):
|
||||
temp = await get_temp(temp_id)
|
||||
if not temp:
|
||||
return {"status": "ERROR", "reason": "No temp found"}
|
||||
|
||||
payment_request = await create_invoice(
|
||||
wallet_id=temp.wallet,
|
||||
amount=int(amount / 1000),
|
||||
memo=temp.name,
|
||||
unhashed_description="[[\"text/plain\", \"" + temp.name + "\"]]".encode(),
|
||||
extra= {
|
||||
"tag": "temp",
|
||||
"link": temp_id,
|
||||
"extra": request.query_params.get("amount"),
|
||||
},
|
||||
)
|
||||
return { "pr": payment_request, "routes": []}
|
||||
|
||||
#################################################
|
||||
######## A very simple LNURLwithdraw ############
|
||||
# https://github.com/lnurl/luds/blob/luds/03.md #
|
||||
#################################################
|
||||
#################################################
|
||||
|
||||
|
||||
@temp_ext.get(
|
||||
"/api/v1/lnurl/withdraw/{temp_id}", status_code=HTTPStatus.OK
|
||||
)
|
||||
async def api_lnurl_pay(
|
||||
request: Request,
|
||||
temp_id: str,
|
||||
):
|
||||
temp = await get_temp(temp_id)
|
||||
if not temp:
|
||||
return {"status": "ERROR", "reason": "No temp found"}
|
||||
return {
|
||||
"callback": str(request.url_for("temp.api_lnurl_pay_callback", temp_id=temp_id)),
|
||||
"maxSendable": temp.lnurlwithdrawamount,
|
||||
"minSendable": temp.lnurlwithdrawamount,
|
||||
"k1": "",
|
||||
"defaultDescription": temp.name,
|
||||
"metadata":"[[\"text/plain\", \"" + temp.name + "\"]]",
|
||||
"tag": "withdrawRequest"
|
||||
}
|
||||
|
||||
@temp_ext.get(
|
||||
"/api/v1/lnurl/pay/cb/{temp_id}",
|
||||
status_code=HTTPStatus.OK,
|
||||
name="temp.api_lnurl_pay_callback",
|
||||
)
|
||||
async def api_lnurl_pay_cb(
|
||||
request: Request,
|
||||
temp_id: str,
|
||||
amount: int = Query(...),
|
||||
):
|
||||
temp = await get_temp(temp_id)
|
||||
if not temp:
|
||||
return {"status": "ERROR", "reason": "No temp found"}
|
||||
|
||||
payment_request = await create_invoice(
|
||||
wallet_id=temp.wallet,
|
||||
amount=int(amount / 1000),
|
||||
memo=temp.name,
|
||||
unhashed_description="[[\"text/plain\", \"" + temp.name + "\"]]".encode(),
|
||||
extra= {
|
||||
"tag": "temp",
|
||||
"link": temp_id,
|
||||
"extra": request.query_params.get("amount"),
|
||||
},
|
||||
)
|
||||
return { "pr": payment_request, "routes": []}
|
||||
Loading…
Add table
Add a link
Reference in a new issue