habulaj commited on
Commit
65003d3
·
verified ·
1 Parent(s): 50ab3b1

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. routes/subscription.py +17 -15
routes/subscription.py CHANGED
@@ -318,29 +318,29 @@ async def stripe_webhook(request: Request):
318
  subscription_id = subscription.get("id")
319
  canceled_at = subscription.get("canceled_at") # Timestamp do cancelamento
320
  cancel_status = subscription.get("cancel_at_period_end", False)
321
-
322
  if canceled_at:
323
  # Convertendo timestamp para data e horário de Nova York
324
  ny_tz = pytz.timezone("America/New_York")
325
  canceled_date = datetime.fromtimestamp(canceled_at, ny_tz).isoformat()
326
-
327
  logger.info(f"🔹 Subscription {subscription_id} canceled at {canceled_date} (New York Time).")
328
-
329
  # 🔹 Atualizando Supabase
330
  update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
331
  update_data = {
332
  "canceled": True,
333
  "canceled_date": canceled_date
334
  }
335
-
336
  supabase_headers = {
337
  "Authorization": f"Bearer {SUPABASE_KEY}",
338
  "apikey": SUPABASE_KEY,
339
  "Content-Type": "application/json"
340
  }
341
-
342
  response_update = requests.patch(update_url, headers=supabase_headers, json=update_data)
343
-
344
  if response_update.status_code in [200, 204]:
345
  logger.info(f"✅ Subscription {subscription_id} updated with canceled date.")
346
  return {"status": "success", "message": "Subscription updated with cancellation date."}
@@ -350,25 +350,27 @@ async def stripe_webhook(request: Request):
350
  else:
351
  logger.info(f"🔹 Subscription {subscription_id} updated, but not canceled.")
352
  return {"status": "success", "message": "Subscription updated but not canceled."}
353
-
354
- elif event_type == "payment_intent.succeeded":
 
 
355
  payment_intent = payload.get("data", {}).get("object", {})
356
-
357
  # 🔹 Pegando os valores do metadado
358
  stylist_id = payment_intent.get("metadata", {}).get("stylist_id")
359
  client_id = payment_intent.get("metadata", {}).get("client_id")
360
  subscription_id = payment_intent.get("metadata", {}).get("subscription_id")
361
  amount_received = payment_intent.get("amount_received", 0) # Valor recebido (em centavos)
362
-
363
  if not all([stylist_id, client_id, subscription_id]):
364
  logger.error("❌ Faltando dados essenciais no metadado do Payment Intent.")
365
  return {"status": "error", "message": "Missing essential metadata."}
366
-
367
  logger.info(f"🔹 Payment Intent succeeded for subscription {subscription_id}")
368
  logger.info(f"👤 Client ID: {client_id}")
369
  logger.info(f"👗 Stylist ID: {stylist_id}")
370
  logger.info(f"💰 Price: R$ {amount_received / 100:.2f}")
371
-
372
  # 🔹 Inserir dados na tabela Emergency_sub no Supabase
373
  emergency_sub_data = {
374
  "sub_id": subscription_id, # Subscription ID
@@ -376,19 +378,19 @@ async def stripe_webhook(request: Request):
376
  "client_id": client_id, # Client ID
377
  "price": amount_received # Price in cents
378
  }
379
-
380
  emergency_sub_url = f"{SUPABASE_URL}/rest/v1/Emergency_sub"
381
  response_emergency_sub = requests.post(
382
  emergency_sub_url,
383
  headers=supabase_headers,
384
  json=emergency_sub_data
385
  )
386
-
387
  if response_emergency_sub.status_code == 201:
388
  logger.info(f"✅ Emergency subscription data added successfully for client {client_id}")
389
  else:
390
  logger.error(f"❌ Failed to add emergency subscription: {response_emergency_sub.status_code} - {response_emergency_sub.text}")
391
-
392
  return {
393
  "status": "success",
394
  "message": "Emergency subscription added successfully"
 
318
  subscription_id = subscription.get("id")
319
  canceled_at = subscription.get("canceled_at") # Timestamp do cancelamento
320
  cancel_status = subscription.get("cancel_at_period_end", False)
321
+
322
  if canceled_at:
323
  # Convertendo timestamp para data e horário de Nova York
324
  ny_tz = pytz.timezone("America/New_York")
325
  canceled_date = datetime.fromtimestamp(canceled_at, ny_tz).isoformat()
326
+
327
  logger.info(f"🔹 Subscription {subscription_id} canceled at {canceled_date} (New York Time).")
328
+
329
  # 🔹 Atualizando Supabase
330
  update_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?sub_id=eq.{subscription_id}"
331
  update_data = {
332
  "canceled": True,
333
  "canceled_date": canceled_date
334
  }
335
+
336
  supabase_headers = {
337
  "Authorization": f"Bearer {SUPABASE_KEY}",
338
  "apikey": SUPABASE_KEY,
339
  "Content-Type": "application/json"
340
  }
341
+
342
  response_update = requests.patch(update_url, headers=supabase_headers, json=update_data)
343
+
344
  if response_update.status_code in [200, 204]:
345
  logger.info(f"✅ Subscription {subscription_id} updated with canceled date.")
346
  return {"status": "success", "message": "Subscription updated with cancellation date."}
 
350
  else:
351
  logger.info(f"🔹 Subscription {subscription_id} updated, but not canceled.")
352
  return {"status": "success", "message": "Subscription updated but not canceled."}
353
+
354
+ # A partir daqui, o bloco do código pode continuar sem problemas.
355
+
356
+ elif event_type == "payment_intent.succeeded":
357
  payment_intent = payload.get("data", {}).get("object", {})
358
+
359
  # 🔹 Pegando os valores do metadado
360
  stylist_id = payment_intent.get("metadata", {}).get("stylist_id")
361
  client_id = payment_intent.get("metadata", {}).get("client_id")
362
  subscription_id = payment_intent.get("metadata", {}).get("subscription_id")
363
  amount_received = payment_intent.get("amount_received", 0) # Valor recebido (em centavos)
364
+
365
  if not all([stylist_id, client_id, subscription_id]):
366
  logger.error("❌ Faltando dados essenciais no metadado do Payment Intent.")
367
  return {"status": "error", "message": "Missing essential metadata."}
368
+
369
  logger.info(f"🔹 Payment Intent succeeded for subscription {subscription_id}")
370
  logger.info(f"👤 Client ID: {client_id}")
371
  logger.info(f"👗 Stylist ID: {stylist_id}")
372
  logger.info(f"💰 Price: R$ {amount_received / 100:.2f}")
373
+
374
  # 🔹 Inserir dados na tabela Emergency_sub no Supabase
375
  emergency_sub_data = {
376
  "sub_id": subscription_id, # Subscription ID
 
378
  "client_id": client_id, # Client ID
379
  "price": amount_received # Price in cents
380
  }
381
+
382
  emergency_sub_url = f"{SUPABASE_URL}/rest/v1/Emergency_sub"
383
  response_emergency_sub = requests.post(
384
  emergency_sub_url,
385
  headers=supabase_headers,
386
  json=emergency_sub_data
387
  )
388
+
389
  if response_emergency_sub.status_code == 201:
390
  logger.info(f"✅ Emergency subscription data added successfully for client {client_id}")
391
  else:
392
  logger.error(f"❌ Failed to add emergency subscription: {response_emergency_sub.status_code} - {response_emergency_sub.text}")
393
+
394
  return {
395
  "status": "success",
396
  "message": "Emergency subscription added successfully"