Update routes/subscription.py
Browse files- routes/subscription.py +33 -1
routes/subscription.py
CHANGED
@@ -246,6 +246,11 @@ async def stripe_webhook(request: Request):
|
|
246 |
session = event["data"]["object"]
|
247 |
payment_intent_id = session.get("payment_intent")
|
248 |
|
|
|
|
|
|
|
|
|
|
|
249 |
try:
|
250 |
# Recupera o PaymentIntent associado à sessão
|
251 |
payment_intent = stripe.PaymentIntent.retrieve(payment_intent_id)
|
@@ -265,10 +270,37 @@ async def stripe_webhook(request: Request):
|
|
265 |
stylist_share = int(amount * 0.8) # 80% para o estilista
|
266 |
platform_share = amount - stylist_share # 20% para a plataforma
|
267 |
|
268 |
-
#
|
269 |
logger.info(f"💸 Payment of R${amount / 100:.2f} BRL received for stylist {stylist_id}.")
|
270 |
logger.info(f"💸 Stylist share: R${stylist_share / 100:.2f} BRL, Platform share: R${platform_share / 100:.2f} BRL.")
|
271 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
# Aqui você pode atualizar seu banco de dados com as informações do pagamento
|
273 |
# Exemplo de atualização do banco com o valor e o status do pagamento
|
274 |
# update_payment_status(user_id, stylist_id, amount, stylist_share, platform_share)
|
|
|
246 |
session = event["data"]["object"]
|
247 |
payment_intent_id = session.get("payment_intent")
|
248 |
|
249 |
+
# Verifica se o payment_intent existe
|
250 |
+
if not payment_intent_id:
|
251 |
+
logger.error("⚠️ No PaymentIntent ID found in session.")
|
252 |
+
raise HTTPException(status_code=400, detail="PaymentIntent ID missing in session.")
|
253 |
+
|
254 |
try:
|
255 |
# Recupera o PaymentIntent associado à sessão
|
256 |
payment_intent = stripe.PaymentIntent.retrieve(payment_intent_id)
|
|
|
270 |
stylist_share = int(amount * 0.8) # 80% para o estilista
|
271 |
platform_share = amount - stylist_share # 20% para a plataforma
|
272 |
|
273 |
+
# Logando os valores
|
274 |
logger.info(f"💸 Payment of R${amount / 100:.2f} BRL received for stylist {stylist_id}.")
|
275 |
logger.info(f"💸 Stylist share: R${stylist_share / 100:.2f} BRL, Platform share: R${platform_share / 100:.2f} BRL.")
|
276 |
|
277 |
+
# Realizando a transferência para o estilista
|
278 |
+
try:
|
279 |
+
# Transfere os fundos para o estilista (Stripe Connect)
|
280 |
+
transfer = stripe.Transfer.create(
|
281 |
+
amount=stylist_share, # Montante para o estilista (80%)
|
282 |
+
currency="brl", # Moeda
|
283 |
+
destination=stylist_id, # Conta do estilista
|
284 |
+
description="Payment for styling service"
|
285 |
+
)
|
286 |
+
logger.info(f"💸 Transfer to stylist {stylist_id} successful: R${stylist_share / 100:.2f} BRL.")
|
287 |
+
except Exception as e:
|
288 |
+
logger.error(f"⚠️ Error transferring funds to stylist: {e}")
|
289 |
+
raise HTTPException(status_code=500, detail="Error transferring funds to stylist.")
|
290 |
+
|
291 |
+
# Você também pode transferir a parte da plataforma, se necessário
|
292 |
+
try:
|
293 |
+
transfer_platform = stripe.Transfer.create(
|
294 |
+
amount=platform_share, # Montante para a plataforma (20%)
|
295 |
+
currency="brl", # Moeda
|
296 |
+
destination="your_platform_stripe_account_id", # Substitua com sua conta Stripe da plataforma
|
297 |
+
description="Platform share"
|
298 |
+
)
|
299 |
+
logger.info(f"💸 Transfer to platform successful: R${platform_share / 100:.2f} BRL.")
|
300 |
+
except Exception as e:
|
301 |
+
logger.error(f"⚠️ Error transferring funds to platform: {e}")
|
302 |
+
raise HTTPException(status_code=500, detail="Error transferring funds to platform.")
|
303 |
+
|
304 |
# Aqui você pode atualizar seu banco de dados com as informações do pagamento
|
305 |
# Exemplo de atualização do banco com o valor e o status do pagamento
|
306 |
# update_payment_status(user_id, stylist_id, amount, stylist_share, platform_share)
|