a special error for when payments fail.

This commit is contained in:
fiatjaf
2021-04-06 14:57:51 -03:00
parent 59aaea47fd
commit 82731dc901
2 changed files with 10 additions and 3 deletions

View File

@@ -29,6 +29,10 @@ from .crud import (
)
class PaymentFailure(Exception):
pass
async def create_invoice(
*,
wallet_id: str,
@@ -162,8 +166,9 @@ async def pay_invoice(
)
await delete_payment(temp_id, conn=conn)
else:
raise Exception(
payment.error_message or "Failed to pay_invoice on backend."
raise PaymentFailure(
payment.error_message
or "Payment failed, but backend didn't give us an error message."
)
return invoice.payment_hash

View File

@@ -12,7 +12,7 @@ from lnbits import bolt11
from lnbits.decorators import api_check_wallet_key, api_validate_post_request
from .. import core_app, db
from ..services import create_invoice, pay_invoice, perform_lnurlauth
from ..services import PaymentFailure, create_invoice, pay_invoice, perform_lnurlauth
from ..tasks import sse_listeners
@@ -127,6 +127,8 @@ async def api_payments_pay_invoice():
return jsonify({"message": str(e)}), HTTPStatus.BAD_REQUEST
except PermissionError as e:
return jsonify({"message": str(e)}), HTTPStatus.FORBIDDEN
except PaymentFailure as e:
return jsonify({"message": str(e)}), 520
except Exception as exc:
raise exc