habulaj commited on
Commit
556183c
·
verified ·
1 Parent(s): c63f6d5

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. routes/subscription.py +25 -5
routes/subscription.py CHANGED
@@ -534,6 +534,7 @@ async def stripe_webhook(request: Request):
534
  canceled_at = subscription.get("canceled_at") # Timestamp do cancelamento
535
  cancel_status = subscription.get("cancel_at_period_end", False)
536
 
 
537
  if canceled_at:
538
  # Convertendo timestamp para data e horário de Nova York
539
  ny_tz = pytz.timezone("America/New_York")
@@ -541,7 +542,7 @@ async def stripe_webhook(request: Request):
541
 
542
  logger.info(f"🔹 Subscription {subscription_id} canceled at {canceled_date} (New York Time).")
543
 
544
- # 🔹 Atualizando Supabase
545
  update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
546
  update_data = {
547
  "canceled": True,
@@ -562,11 +563,30 @@ async def stripe_webhook(request: Request):
562
  else:
563
  logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
564
  return {"status": "error", "message": "Failed to update subscription."}
565
- else:
566
- logger.info(f"🔹 Subscription {subscription_id} updated, but not canceled.")
567
- return {"status": "success", "message": "Subscription updated but not canceled."}
568
 
569
- # A partir daqui, o bloco do código pode continuar sem problemas.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
570
 
571
  elif event_type == "payment_intent.succeeded":
572
  payment_intent = payload.get("data", {}).get("object", {})
 
534
  canceled_at = subscription.get("canceled_at") # Timestamp do cancelamento
535
  cancel_status = subscription.get("cancel_at_period_end", False)
536
 
537
+ # Verifica se a assinatura foi cancelada
538
  if canceled_at:
539
  # Convertendo timestamp para data e horário de Nova York
540
  ny_tz = pytz.timezone("America/New_York")
 
542
 
543
  logger.info(f"🔹 Subscription {subscription_id} canceled at {canceled_date} (New York Time).")
544
 
545
+ # Atualizando no Supabase a assinatura como cancelada
546
  update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
547
  update_data = {
548
  "canceled": True,
 
563
  else:
564
  logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
565
  return {"status": "error", "message": "Failed to update subscription."}
 
 
 
566
 
567
+ # Caso a assinatura tenha sido reativada (cancel_at_period_end=False)
568
+ elif not cancel_status:
569
+ logger.info(f"🔹 Subscription {subscription_id} reactivated.")
570
+
571
+ # Atualizando o status no Supabase para reativado
572
+ update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
573
+ update_data = {
574
+ "canceled": False,
575
+ "canceled_date": None # Remove a data de cancelamento
576
+ }
577
+
578
+ response_update = requests.patch(update_url, headers=supabase_headers, json=update_data)
579
+
580
+ if response_update.status_code in [200, 204]:
581
+ logger.info(f"✅ Subscription {subscription_id} reactivated and canceled data removed.")
582
+ return {"status": "success", "message": "Subscription reactivated and canceled date removed."}
583
+ else:
584
+ logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
585
+ return {"status": "error", "message": "Failed to update subscription."}
586
+
587
+ else:
588
+ logger.info(f"🔹 Subscription {subscription_id} updated, but not canceled or reactivated.")
589
+ return {"status": "success", "message": "Subscription updated but not canceled or reactivated."}
590
 
591
  elif event_type == "payment_intent.succeeded":
592
  payment_intent = payload.get("data", {}).get("object", {})