diff --git a/lnbits/extensions/boltcards/tasks.py b/lnbits/extensions/boltcards/tasks.py index 1b51c98b..27929efc 100644 --- a/lnbits/extensions/boltcards/tasks.py +++ b/lnbits/extensions/boltcards/tasks.py @@ -2,12 +2,13 @@ import asyncio import json import httpx +from loguru import logger from lnbits.core import db as core_db from lnbits.core.models import Payment from lnbits.tasks import register_invoice_listener -from .crud import create_refund, get_hit +from .crud import create_refund, get_card, get_hit async def wait_for_paid_invoices(): @@ -34,6 +35,25 @@ async def on_invoice_paid(payment: Payment) -> None: ) await mark_webhook_sent(payment, 1) + card = await get_card(hit.card_id) + if card.webhook_url: + async with httpx.AsyncClient() as client: + try: + r = await client.post( + card.webhook_url, + json={ + "notification": "card_refund", + "payment_hash": payment.payment_hash, + "payment_request": payment.bolt11, + "card_external_id": card.external_id, + "card_name": card.card_name, + "amount": int(payment.amount / 1000), + }, + timeout=40, + ) + except Exception as exc: + logger.error("Caught exception when dispatching webhook url:", exc) + async def mark_webhook_sent(payment: Payment, status: int) -> None: payment.extra["wh_status"] = status