habulaj commited on
Commit
34a431e
·
verified ·
1 Parent(s): eeb4594

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. routes/subscription.py +16 -11
routes/subscription.py CHANGED
@@ -217,22 +217,27 @@ async def subscription_details(data: SubscriptionRequest):
217
  subscription_status = "active"
218
  elif status == "canceled" and subscription["current_period_end"] > datetime.utcnow().timestamp():
219
  subscription_status = "canceled"
 
 
220
  else:
221
  subscription_status = "terminated"
222
 
223
  # Pegando os detalhes do preço atual
224
  current_price = subscription["items"]["data"][0]["price"]["unit_amount"] / 100
225
  currency = subscription["items"]["data"][0]["price"]["currency"].upper()
226
-
227
  # Data da próxima cobrança
228
- next_billing_date = datetime.utcfromtimestamp(subscription["current_period_end"]).isoformat()
229
-
230
- # Preço da próxima cobrança
231
- upcoming_invoice = await async_stripe_request(
232
- stripe.Invoice.upcoming,
233
- subscription=subscription_id
234
- )
235
- next_invoice_amount = upcoming_invoice["amount_due"] / 100 if upcoming_invoice else None
 
 
 
236
 
237
  # Método de pagamento utilizado
238
  payment_method = subscription.get("default_payment_method")
@@ -277,8 +282,8 @@ async def subscription_details(data: SubscriptionRequest):
277
  "status": subscription_status,
278
  "subscription_id": subscription_id,
279
  "current_price": f"{current_price} {currency}",
280
- "next_invoice_amount": f"{next_invoice_amount} {currency}" if next_invoice_amount else "N/A",
281
- "next_billing_date": next_billing_date,
282
  "payment_method": payment_info,
283
  "stylist_id": stylist_id,
284
  "stylist_avatar": stylist_avatar,
 
217
  subscription_status = "active"
218
  elif status == "canceled" and subscription["current_period_end"] > datetime.utcnow().timestamp():
219
  subscription_status = "canceled"
220
+ elif status == "canceled" and subscription["current_period_end"] <= datetime.utcnow().timestamp():
221
+ subscription_status = "canceled"
222
  else:
223
  subscription_status = "terminated"
224
 
225
  # Pegando os detalhes do preço atual
226
  current_price = subscription["items"]["data"][0]["price"]["unit_amount"] / 100
227
  currency = subscription["items"]["data"][0]["price"]["currency"].upper()
228
+
229
  # Data da próxima cobrança
230
+ try:
231
+ upcoming_invoice = await async_stripe_request(
232
+ stripe.Invoice.upcoming,
233
+ subscription=subscription_id
234
+ )
235
+ next_invoice_amount = upcoming_invoice["amount_due"] / 100 if upcoming_invoice else None
236
+ except stripe.error.StripeError:
237
+ next_invoice_amount = None
238
+
239
+ if next_invoice_amount is None:
240
+ next_invoice_amount = "N/A"
241
 
242
  # Método de pagamento utilizado
243
  payment_method = subscription.get("default_payment_method")
 
282
  "status": subscription_status,
283
  "subscription_id": subscription_id,
284
  "current_price": f"{current_price} {currency}",
285
+ "next_invoice_amount": f"{next_invoice_amount} {currency}" if next_invoice_amount != "N/A" else "N/A",
286
+ "next_billing_date": datetime.utcfromtimestamp(subscription["current_period_end"]).isoformat(),
287
  "payment_method": payment_info,
288
  "stylist_id": stylist_id,
289
  "stylist_avatar": stylist_avatar,