Update routes/subscription.py
Browse files- routes/subscription.py +36 -1
routes/subscription.py
CHANGED
@@ -168,4 +168,39 @@ def cancel_subscription(data: CancelSubscriptionRequest):
|
|
168 |
)
|
169 |
return {"status": "Subscription will be canceled at period end"}
|
170 |
except Exception as e:
|
171 |
-
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
)
|
169 |
return {"status": "Subscription will be canceled at period end"}
|
170 |
except Exception as e:
|
171 |
+
raise HTTPException(status_code=500, detail=str(e))
|
172 |
+
|
173 |
+
# 🚀 Verificação de Assinatura
|
174 |
+
@router.post("/check_subscription")
|
175 |
+
def check_subscription(user_id: str, stylist_id: str):
|
176 |
+
try:
|
177 |
+
# Buscar todas as assinaturas ativas para o usuário (cliente)
|
178 |
+
subscriptions = stripe.Subscription.list(
|
179 |
+
customer=user_id, # ID do cliente
|
180 |
+
status="active", # Assinaturas ativas
|
181 |
+
expand=["data.items"] # Expande os dados para pegar os itens e o metadata
|
182 |
+
)
|
183 |
+
|
184 |
+
# Verificar se existe uma assinatura ativa para o estilista
|
185 |
+
for subscription in subscriptions["data"]:
|
186 |
+
# Verifica se o stylist_id está presente no metadata da assinatura
|
187 |
+
if subscription.metadata.get("stylist_id") == stylist_id:
|
188 |
+
return {
|
189 |
+
"status": "active",
|
190 |
+
"subscription_id": subscription.id,
|
191 |
+
"consultations_per_month": subscription.metadata.get("consultations_per_month")
|
192 |
+
}
|
193 |
+
|
194 |
+
# Caso não tenha encontrado assinatura ativa para o estilista
|
195 |
+
return {
|
196 |
+
"status": "inactive",
|
197 |
+
"message": "No active subscription found for this stylist."
|
198 |
+
}
|
199 |
+
|
200 |
+
except stripe.error.StripeError as e:
|
201 |
+
# Captura erros específicos do Stripe
|
202 |
+
raise HTTPException(status_code=500, detail=f"Stripe error: {str(e)}")
|
203 |
+
except Exception as e:
|
204 |
+
# Captura outros erros genéricos
|
205 |
+
logger.error(f"Error checking subscription: {e}")
|
206 |
+
raise HTTPException(status_code=500, detail="Error checking subscription.")
|