feat(events): harden registration checkout lifecycle
This commit is contained in:
@@ -38,6 +38,21 @@ app.conf.beat_schedule = {
|
||||
'schedule': crontab(hour=2, minute=0),
|
||||
'description': 'Runs daily at 02:00 UTC to cleanup notification retention.',
|
||||
},
|
||||
'sweep-stale-payment-verifications': {
|
||||
'task': 'apps.payments.sweep_stale_payment_verifications',
|
||||
'schedule': crontab(minute='*/5'),
|
||||
'description': 'Recovers old unresolved payment attempts with bounded gateway verification.',
|
||||
},
|
||||
'expire-stale-registration-checkouts': {
|
||||
'task': 'apps.events.expire_stale_registration_checkouts',
|
||||
'schedule': crontab(minute='*'),
|
||||
'description': 'Releases seats from paid checkouts after their 15-minute window.',
|
||||
},
|
||||
'sweep-pending-refunds': {
|
||||
'task': 'apps.payments.sweep_pending_refunds',
|
||||
'schedule': crontab(minute='*/5'),
|
||||
'description': 'Recovers pending transaction reversals and exposes exhausted attempts for admin review.',
|
||||
},
|
||||
}
|
||||
|
||||
CELERY_TASK_SOFT_TIME_LIMIT = 20
|
||||
|
||||
@@ -6,5 +6,6 @@ ZARINPAL_USE_SANDBOX = config('ZARINPAL_USE_SANDBOX', default=False, cast=bool)
|
||||
ZARINPAL_API_BASE = "https://sandbox.zarinpal.com" if ZARINPAL_USE_SANDBOX else "https://payment.zarinpal.com"
|
||||
ZARINPAL_REQUEST_URL = f"{ZARINPAL_API_BASE}/pg/v4/payment/request.json"
|
||||
ZARINPAL_VERIFY_URL = f"{ZARINPAL_API_BASE}/pg/v4/payment/verify.json"
|
||||
ZARINPAL_REVERSE_URL = f"{ZARINPAL_API_BASE}/pg/v4/payment/reverse.json"
|
||||
ZARINPAL_STARTPAY = f"{ZARINPAL_API_BASE}/pg/StartPay/"
|
||||
ZARINPAL_CALLBACK_URL = config('ZARINPAL_CALLBACK_URL', default='http://localhost:8000/api/payments/callback')
|
||||
|
||||
@@ -229,6 +229,9 @@ os.makedirs(BASE_DIR / 'logs', exist_ok=True)
|
||||
BACKEND_ROOT = config('DJANGO_HOST', default='http://localhost:8000/')
|
||||
FRONTEND_ROOT = config('FRONTEND_ROOT', default='http://localhost:3000/')
|
||||
FRONTEND_CALLBACK_URL = config('FRONTEND_CALLBACK_URL', default='http://localhost:3000/payments/result')
|
||||
PAYMENT_VERIFICATION_GRACE_SECONDS = config('PAYMENT_VERIFICATION_GRACE_SECONDS', cast=int, default=1800)
|
||||
PAYMENT_VERIFICATION_MAX_ATTEMPTS = config('PAYMENT_VERIFICATION_MAX_ATTEMPTS', cast=int, default=6)
|
||||
PAYMENT_VERIFICATION_DISPATCH_LEASE_SECONDS = config('PAYMENT_VERIFICATION_DISPATCH_LEASE_SECONDS', cast=int, default=900)
|
||||
GOOGLE_OAUTH_CLIENT_ID = config('GOOGLE_OAUTH_CLIENT_ID', default='')
|
||||
GOOGLE_OAUTH_CLIENT_SECRET = config('GOOGLE_OAUTH_CLIENT_SECRET', default='')
|
||||
GOOGLE_OAUTH_REDIRECT_URI = config('GOOGLE_OAUTH_REDIRECT_URI', default='')
|
||||
|
||||
Reference in New Issue
Block a user