fix(payments): keep callback redirect resilient to Redis
This commit is contained in:
@@ -13,6 +13,8 @@ from typing import List
|
||||
from ninja import Query, Router
|
||||
from ninja.errors import HttpError
|
||||
import requests
|
||||
import redis
|
||||
from kombu.exceptions import OperationalError as KombuOperationalError
|
||||
|
||||
from apps.payments.models import Payment, DiscountCode
|
||||
from apps.events.models import Event, Registration
|
||||
@@ -236,26 +238,38 @@ def _event_action_url(event: Event) -> str:
|
||||
|
||||
|
||||
def _notify_payment_status(payment: Payment, *, title: str, message: str, level: str):
|
||||
notify_user(
|
||||
payment.user_id,
|
||||
{
|
||||
"type": "payment_status",
|
||||
"title": title,
|
||||
"message": message,
|
||||
"level": level,
|
||||
"action_url": _event_action_url(payment.event),
|
||||
"entity_type": "payment",
|
||||
"entity_id": payment.id,
|
||||
"meta": {
|
||||
"event_id": payment.event_id,
|
||||
"payment_id": payment.id,
|
||||
"ref_id": payment.ref_id,
|
||||
"status": payment.status,
|
||||
try:
|
||||
notify_user(
|
||||
payment.user_id,
|
||||
{
|
||||
"type": "payment_status",
|
||||
"title": title,
|
||||
"message": message,
|
||||
"level": level,
|
||||
"action_url": _event_action_url(payment.event),
|
||||
"entity_type": "payment",
|
||||
"entity_id": payment.id,
|
||||
"meta": {
|
||||
"event_id": payment.event_id,
|
||||
"payment_id": payment.id,
|
||||
"ref_id": payment.ref_id,
|
||||
"status": payment.status,
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
)
|
||||
except redis.exceptions.RedisError:
|
||||
logger.exception(
|
||||
"Unable to store payment status notification for payment %s; payment state is already saved",
|
||||
payment.id,
|
||||
)
|
||||
if payment.user.mobile and payment.user.is_mobile_verified:
|
||||
send_critical_sms.delay(payment.user.mobile, "payment_status", payment.event.title)
|
||||
try:
|
||||
send_critical_sms.delay(payment.user.mobile, "payment_status", payment.event.title)
|
||||
except (KombuOperationalError, redis.exceptions.RedisError):
|
||||
logger.exception(
|
||||
"Unable to queue payment status SMS for payment %s; payment state is already saved",
|
||||
payment.id,
|
||||
)
|
||||
|
||||
|
||||
def _payment_status_name(payment: Payment) -> str:
|
||||
|
||||
Reference in New Issue
Block a user