diff --git a/tasks.py b/tasks.py index b22677f..49258a5 100644 --- a/tasks.py +++ b/tasks.py @@ -79,11 +79,12 @@ async def on_invoice_paid(payment: Payment) -> None: charge.paid = True logger.success(f"Charge {charge.id} invoice paid.") charge.add_extra({"payment_method": "lightning"}) + charge = await update_charge(charge) await send_success_websocket(charge) if charge.webhook: resp = await call_webhook(charge) charge.add_extra(resp) - await update_charge(charge) + await update_charge(charge) def start_onchain_listener(address: str): @@ -124,12 +125,13 @@ async def _handle_ws_message(address: str, data: dict): charge.balance = confirmed_balance charge.pending = unconfirmed_balance charge.paid = charge.balance >= charge.amount - await send_success_websocket(charge) if charge.paid: charge.add_extra({"payment_method": "onchain"}) logger.success(f"Charge {charge.id} onchain paid.") stop_onchain_listener(address) + charge = await update_charge(charge) + await send_success_websocket(charge) if charge.webhook: resp = await call_webhook(charge) charge.add_extra(resp) - await update_charge(charge) + await update_charge(charge) diff --git a/views_api.py b/views_api.py index a3f809a..be45a4b 100644 --- a/views_api.py +++ b/views_api.py @@ -171,8 +171,12 @@ async def api_charge_webhook(charge_id: str) -> Charge: raise HTTPException( status_code=HTTPStatus.BAD_REQUEST, detail="No webhook set." ) + # update payment status + charge = await update_charge(charge) + resp = await call_webhook(charge) charge.add_extra(resp) + # update webhook status charge = await update_charge(charge) return charge