Update routes/subscription.py
Browse files- routes/subscription.py +10 -9
routes/subscription.py
CHANGED
@@ -528,12 +528,19 @@ async def stripe_webhook(request: Request):
|
|
528 |
logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
|
529 |
return {"status": "error", "message": "Failed to update subscription."}
|
530 |
|
531 |
-
|
532 |
subscription = payload.get("data", {}).get("object", {})
|
533 |
subscription_id = subscription.get("id")
|
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
|
@@ -549,12 +556,6 @@ async def stripe_webhook(request: Request):
|
|
549 |
"canceled_date": canceled_date
|
550 |
}
|
551 |
|
552 |
-
supabase_headers = {
|
553 |
-
"Authorization": f"Bearer {SUPABASE_KEY}",
|
554 |
-
"apikey": SUPABASE_KEY,
|
555 |
-
"Content-Type": "application/json"
|
556 |
-
}
|
557 |
-
|
558 |
response_update = requests.patch(update_url, headers=supabase_headers, json=update_data)
|
559 |
|
560 |
if response_update.status_code in [200, 204]:
|
@@ -567,7 +568,7 @@ async def stripe_webhook(request: Request):
|
|
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 = {
|
@@ -583,7 +584,7 @@ async def stripe_webhook(request: Request):
|
|
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."}
|
|
|
528 |
logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
|
529 |
return {"status": "error", "message": "Failed to update subscription."}
|
530 |
|
531 |
+
elif event_type == "customer.subscription.updated":
|
532 |
subscription = payload.get("data", {}).get("object", {})
|
533 |
subscription_id = subscription.get("id")
|
534 |
canceled_at = subscription.get("canceled_at") # Timestamp do cancelamento
|
535 |
cancel_status = subscription.get("cancel_at_period_end", False)
|
536 |
|
537 |
+
# 🔹 Definir os cabeçalhos do Supabase antes de qualquer uso
|
538 |
+
supabase_headers = {
|
539 |
+
"Authorization": f"Bearer {SUPABASE_KEY}",
|
540 |
+
"apikey": SUPABASE_KEY,
|
541 |
+
"Content-Type": "application/json"
|
542 |
+
}
|
543 |
+
|
544 |
# Verifica se a assinatura foi cancelada
|
545 |
if canceled_at:
|
546 |
# Convertendo timestamp para data e horário de Nova York
|
|
|
556 |
"canceled_date": canceled_date
|
557 |
}
|
558 |
|
|
|
|
|
|
|
|
|
|
|
|
|
559 |
response_update = requests.patch(update_url, headers=supabase_headers, json=update_data)
|
560 |
|
561 |
if response_update.status_code in [200, 204]:
|
|
|
568 |
# Caso a assinatura tenha sido reativada (cancel_at_period_end=False)
|
569 |
elif not cancel_status:
|
570 |
logger.info(f"🔹 Subscription {subscription_id} reactivated.")
|
571 |
+
|
572 |
# Atualizando o status no Supabase para reativado
|
573 |
update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
|
574 |
update_data = {
|
|
|
584 |
else:
|
585 |
logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
|
586 |
return {"status": "error", "message": "Failed to update subscription."}
|
587 |
+
|
588 |
else:
|
589 |
logger.info(f"🔹 Subscription {subscription_id} updated, but not canceled or reactivated.")
|
590 |
return {"status": "success", "message": "Subscription updated but not canceled or reactivated."}
|