Added decode lnurl and extra payment check
This commit is contained in:
parent
b6f5052da0
commit
19df2f888b
2 changed files with 66 additions and 2 deletions
|
|
@ -19,7 +19,7 @@
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<code><span class="text-light-green">GET</span> /api/v1/wallet</code>
|
<code><span class="text-light-green">GET</span> /api/v1/wallet</code>
|
||||||
<h5 class="text-caption q-mt-sm q-mb-none">Headers</h5>
|
<h5 class="text-caption q-mt-sm q-mb-none">Headers</h5>
|
||||||
<code>{"X-Api-Key": "<i>{{ wallet.adminkey }}</i>"}</code><br />
|
<code>{"X-Api-Key": "<i>{{ wallet.inkey }}</i>"}</code><br />
|
||||||
<h5 class="text-caption q-mt-sm q-mb-none">
|
<h5 class="text-caption q-mt-sm q-mb-none">
|
||||||
Returns 200 OK (application/json)
|
Returns 200 OK (application/json)
|
||||||
</h5>
|
</h5>
|
||||||
|
|
@ -94,6 +94,35 @@
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
</q-expansion-item>
|
</q-expansion-item>
|
||||||
|
|
||||||
|
<q-expansion-item
|
||||||
|
group="api"
|
||||||
|
dense
|
||||||
|
expand-separator
|
||||||
|
label="Decode an invoice"
|
||||||
|
>
|
||||||
|
<q-card>
|
||||||
|
<q-card-section>
|
||||||
|
<code
|
||||||
|
><span class="text-light-green">POST</span>
|
||||||
|
/api/v1/payments/decode</code
|
||||||
|
>
|
||||||
|
<h5 class="text-caption q-mt-sm q-mb-none">Headers</h5>
|
||||||
|
<code>{"X-Api-Key": "<i>{{ wallet.inkey }}</i>"}</code><br />
|
||||||
|
<h5 class="text-caption q-mt-sm q-mb-none">Body (application/json)</h5>
|
||||||
|
<code>{"invoice": <string>}</code>
|
||||||
|
<h5 class="text-caption q-mt-sm q-mb-none">
|
||||||
|
Returns 200 (application/json)
|
||||||
|
</h5>
|
||||||
|
<h5 class="text-caption q-mt-sm q-mb-none">Curl example</h5>
|
||||||
|
<code
|
||||||
|
>curl -X POST {{ request.url_root }}api/v1/payments/decode -d
|
||||||
|
'{"data": <bolt11/lnurl, string>}' -H "X-Api-Key:
|
||||||
|
<i>{{ wallet.inkey }}</i>" -H "Content-type: application/json"</code
|
||||||
|
>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</q-expansion-item>
|
||||||
<q-expansion-item
|
<q-expansion-item
|
||||||
group="api"
|
group="api"
|
||||||
dense
|
dense
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from binascii import unhexlify
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
from typing import Dict, Optional, Union
|
from typing import Dict, Optional, Union
|
||||||
from urllib.parse import ParseResult, parse_qs, urlencode, urlparse, urlunparse
|
from urllib.parse import ParseResult, parse_qs, urlencode, urlparse, urlunparse
|
||||||
|
from lnbits.bolt11 import Invoice
|
||||||
import httpx
|
import httpx
|
||||||
from fastapi import Query, Request
|
from fastapi import Query, Request
|
||||||
from fastapi.exceptions import HTTPException
|
from fastapi.exceptions import HTTPException
|
||||||
|
|
@ -34,6 +34,7 @@ from ..services import (
|
||||||
create_invoice,
|
create_invoice,
|
||||||
pay_invoice,
|
pay_invoice,
|
||||||
perform_lnurlauth,
|
perform_lnurlauth,
|
||||||
|
check_invoice_status,
|
||||||
)
|
)
|
||||||
from ..tasks import api_invoice_listeners
|
from ..tasks import api_invoice_listeners
|
||||||
|
|
||||||
|
|
@ -61,6 +62,16 @@ async def api_update_wallet(
|
||||||
|
|
||||||
@core_app.get("/api/v1/payments")
|
@core_app.get("/api/v1/payments")
|
||||||
async def api_payments(wallet: WalletTypeInfo = Depends(get_key_type)):
|
async def api_payments(wallet: WalletTypeInfo = Depends(get_key_type)):
|
||||||
|
await get_payments(
|
||||||
|
wallet_id=wallet.wallet.id,
|
||||||
|
pending=True,
|
||||||
|
complete=True,
|
||||||
|
)
|
||||||
|
pendingPayments = await get_payments(wallet_id=wallet.wallet.id, pending=True)
|
||||||
|
for payment in pendingPayments:
|
||||||
|
await check_invoice_status(
|
||||||
|
wallet_id=payment.wallet_id, payment_hash=payment.payment_hash
|
||||||
|
)
|
||||||
return await get_payments(wallet_id=wallet.wallet.id, pending=True, complete=True)
|
return await get_payments(wallet_id=wallet.wallet.id, pending=True, complete=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -441,6 +452,30 @@ async def api_lnurlscan(code: str):
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
|
@core_app.post("/api/v1/payments/decode")
|
||||||
|
async def api_payments_decode(data: str = Query(None)):
|
||||||
|
try:
|
||||||
|
if g.data["data"][:5] == "LNURL":
|
||||||
|
url = lnurl.decode(g.data["data"])
|
||||||
|
return {"domain": url}
|
||||||
|
else:
|
||||||
|
invoice = bolt11.decode(g.data["data"])
|
||||||
|
return {
|
||||||
|
"payment_hash": invoice.payment_hash,
|
||||||
|
"amount_msat": invoice.amount_msat,
|
||||||
|
"description": invoice.description,
|
||||||
|
"description_hash": invoice.description_hash,
|
||||||
|
"payee": invoice.payee,
|
||||||
|
"date": invoice.date,
|
||||||
|
"expiry": invoice.expiry,
|
||||||
|
"secret": invoice.secret,
|
||||||
|
"route_hints": invoice.route_hints,
|
||||||
|
"min_final_cltv_expiry": invoice.min_final_cltv_expiry,
|
||||||
|
}
|
||||||
|
except:
|
||||||
|
return {"message": "Failed to decode"}
|
||||||
|
|
||||||
|
|
||||||
@core_app.post("/api/v1/lnurlauth", dependencies=[Depends(WalletAdminKeyChecker())])
|
@core_app.post("/api/v1/lnurlauth", dependencies=[Depends(WalletAdminKeyChecker())])
|
||||||
async def api_perform_lnurlauth(callback: str):
|
async def api_perform_lnurlauth(callback: str):
|
||||||
err = await perform_lnurlauth(callback)
|
err = await perform_lnurlauth(callback)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue