habulaj commited on
Commit
5236abc
·
verified ·
1 Parent(s): 08cdb44

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. 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
- # Aqui, o pagamento já foi transferido para o estilista, então não há mais necessidade de fazer uma transferência manual
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)