habulaj commited on
Commit
2375d08
·
verified ·
1 Parent(s): 8bd2328

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. routes/subscription.py +38 -0
routes/subscription.py CHANGED
@@ -165,6 +165,44 @@ async def stripe_webhook(request: Request):
165
  logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
166
  return {"status": "error", "message": "Failed to update subscription."}
167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  except Exception as e:
169
  logger.error(f"❌ Erro no webhook: {str(e)}")
170
  return {"status": "error", "message": str(e)}
 
165
  logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
166
  return {"status": "error", "message": "Failed to update subscription."}
167
 
168
+ if event_type == "customer.subscription.updated":
169
+ subscription = payload.get("data", {}).get("object", {})
170
+ subscription_id = subscription.get("id")
171
+ canceled_at = subscription.get("canceled_at") # Timestamp do cancelamento
172
+ cancel_status = subscription.get("cancel_at_period_end", False)
173
+
174
+ if canceled_at:
175
+ # Convertendo timestamp para data e horário de Nova York
176
+ ny_tz = pytz.timezone("America/New_York")
177
+ canceled_date = datetime.fromtimestamp(canceled_at, ny_tz).isoformat()
178
+
179
+ logger.info(f"🔹 Subscription {subscription_id} canceled at {canceled_date} (New York Time).")
180
+
181
+ # 🔹 Atualizando Supabase
182
+ update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
183
+ update_data = {
184
+ "canceled": True,
185
+ "canceled_date": canceled_date
186
+ }
187
+
188
+ supabase_headers = {
189
+ "Authorization": f"Bearer {SUPABASE_KEY}",
190
+ "apikey": SUPABASE_KEY,
191
+ "Content-Type": "application/json"
192
+ }
193
+
194
+ response_update = requests.patch(update_url, headers=supabase_headers, json=update_data)
195
+
196
+ if response_update.status_code in [200, 204]:
197
+ logger.info(f"✅ Subscription {subscription_id} updated with canceled date.")
198
+ return {"status": "success", "message": "Subscription updated with cancellation date."}
199
+ else:
200
+ logger.error(f"❌ Failed to update subscription: {response_update.status_code} - {response_update.text}")
201
+ return {"status": "error", "message": "Failed to update subscription."}
202
+ else:
203
+ logger.info(f"🔹 Subscription {subscription_id} updated, but not canceled.")
204
+ return {"status": "success", "message": "Subscription updated but not canceled."}
205
+
206
  except Exception as e:
207
  logger.error(f"❌ Erro no webhook: {str(e)}")
208
  return {"status": "error", "message": str(e)}