habulaj commited on
Commit
6873666
·
verified ·
1 Parent(s): a0c68f3

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. routes/subscription.py +54 -6
routes/subscription.py CHANGED
@@ -359,19 +359,67 @@ def cancel_subscription(data: CancelSubscriptionRequest):
359
 
360
  # 🚀 Verificação de Assinatura
361
  @router.post("/check_subscription")
362
- def check_subscription(data: CheckSubscriptionRequest):
 
 
 
363
  try:
364
- # Buscar todas as assinaturas ativas para o usuário (cliente)
 
 
 
 
 
 
365
  subscriptions = stripe.Subscription.list(
366
- customer=data.user_id, # ID do cliente
367
- status="active", # Assinaturas ativas
368
- expand=["data.items"] # Expande os dados para pegar os itens e o metadata
369
  )
370
 
371
- # Verificar se existe uma assinatura ativa para o estilista
372
  for subscription in subscriptions["data"]:
373
  # Verifica se o stylist_id está presente no metadata da assinatura
374
  if subscription.metadata.get("stylist_id") == data.stylist_id:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  return {
376
  "status": "active",
377
  "subscription_id": subscription.id,
 
359
 
360
  # 🚀 Verificação de Assinatura
361
  @router.post("/check_subscription")
362
+ def check_subscription(
363
+ data: CheckSubscriptionRequest,
364
+ user_token: str = Header(None, alias="User-key") # Recebendo o token do cabeçalho
365
+ ):
366
  try:
367
+ if not user_token:
368
+ raise HTTPException(status_code=401, detail="Missing User-key header")
369
+
370
+ # 🔹 Validar o token do cliente e obter user_id (cliente)
371
+ user_id = verify_token(user_token)
372
+
373
+ # 🔹 Buscar todas as assinaturas ativas para o usuário (cliente)
374
  subscriptions = stripe.Subscription.list(
375
+ customer=user_id, # ID do cliente obtido do token
376
+ status="active", # Assinaturas ativas
377
+ expand=["data.items"] # Expande os dados para pegar os itens e o metadata
378
  )
379
 
380
+ # 🔹 Verificar se existe uma assinatura ativa para o estilista
381
  for subscription in subscriptions["data"]:
382
  # Verifica se o stylist_id está presente no metadata da assinatura
383
  if subscription.metadata.get("stylist_id") == data.stylist_id:
384
+ # Se encontrou a assinatura ativa, vamos registrar a assinatura no Supabase
385
+ subscription_id = subscription.id # ID da assinatura
386
+ price_id = subscription.items.data[0].price.id # ID do preço da assinatura
387
+
388
+ # 🔹 Definir o fuso horário de Nova York usando pytz
389
+ nyc_tz = pytz.timezone('America/New_York')
390
+ created_at = datetime.now(nyc_tz) # Hora atual de Nova York
391
+
392
+ # 🔹 Inserir dados na tabela Subscriptions no Supabase
393
+ subscription_data = {
394
+ "stylist_id": data.stylist_id, # ID do estilista
395
+ "customer_id": user_id, # ID do cliente
396
+ "active": True, # Assinatura ativa
397
+ "created_at": created_at.isoformat(), # Hora atual em formato ISO 8601
398
+ "sub_id": subscription_id, # ID da assinatura
399
+ "price_id": price_id # ID do preço
400
+ }
401
+
402
+ # Configuração do cabeçalho de autenticação para o Supabase
403
+ supabase_headers = {
404
+ "Authorization": f"Bearer {SUPABASE_KEY}",
405
+ "apikey": SUPABASE_KEY,
406
+ "Content-Type": "application/json"
407
+ }
408
+
409
+ # Inserir nova linha na tabela Subscriptions (não precisamos definir 'id' explicitamente)
410
+ subscription_url = f"{SUPABASE_URL}/rest/v1/Subscriptions"
411
+ response_subscription = requests.post(
412
+ subscription_url,
413
+ headers=supabase_headers,
414
+ json=subscription_data
415
+ )
416
+
417
+ # Verificando a resposta da inserção
418
+ if response_subscription.status_code == 201:
419
+ logger.info(f"✅ Subscription added successfully for user {user_id}")
420
+ else:
421
+ logger.error(f"❌ Failed to add subscription: {response_subscription.status_code} - {response_subscription.text}")
422
+
423
  return {
424
  "status": "active",
425
  "subscription_id": subscription.id,