Update routes/subscription.py
Browse files- 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 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
|
|
|
|
|
|
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":
|
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,
|