mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-25 11:14:02 +02:00
floor amount when not whole sat
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import asyncio
|
||||
import json
|
||||
from http import HTTPStatus
|
||||
from math import floor
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import httpx
|
||||
@@ -26,7 +27,7 @@ async def wait_for_paid_invoices():
|
||||
|
||||
async def on_invoice_paid(payment: Payment) -> None:
|
||||
# (avoid loops)
|
||||
if "scrubed" == payment.extra.get("tag"):
|
||||
if payment.extra.get("tag") == "scrubed":
|
||||
# already scrubbed
|
||||
return
|
||||
|
||||
@@ -42,12 +43,13 @@ async def on_invoice_paid(payment: Payment) -> None:
|
||||
|
||||
# I REALLY HATE THIS DUPLICATION OF CODE!! CORE/VIEWS/API.PY, LINE 267
|
||||
domain = urlparse(data["callback"]).netloc
|
||||
|
||||
rounded_amount = floor(payment.amount / 1000) * 1000
|
||||
|
||||
async with httpx.AsyncClient() as client:
|
||||
try:
|
||||
r = await client.get(
|
||||
data["callback"],
|
||||
params={"amount": payment.amount},
|
||||
params={"amount": rounded_amount},
|
||||
timeout=40,
|
||||
)
|
||||
if r.is_error:
|
||||
@@ -66,7 +68,8 @@ async def on_invoice_paid(payment: Payment) -> None:
|
||||
)
|
||||
|
||||
invoice = bolt11.decode(params["pr"])
|
||||
if invoice.amount_msat != payment.amount:
|
||||
|
||||
if invoice.amount_msat != rounded_amount:
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.BAD_REQUEST,
|
||||
detail=f"{domain} returned an invalid invoice. Expected {payment.amount} msat, got {invoice.amount_msat}.",
|
||||
|
Reference in New Issue
Block a user