mirror of https://github.com/kortix-ai/suna.git
debug time based events from stripe
This commit is contained in:
parent
24cc705b99
commit
8de9c03471
|
@ -27,6 +27,12 @@ class WebhookService:
|
||||||
payload = await request.body()
|
payload = await request.body()
|
||||||
sig_header = request.headers.get('stripe-signature')
|
sig_header = request.headers.get('stripe-signature')
|
||||||
|
|
||||||
|
|
||||||
|
logger.info(f"[WEBHOOK] Received webhook request, signature present: {bool(sig_header)}")
|
||||||
|
if not config.STRIPE_WEBHOOK_SECRET:
|
||||||
|
logger.error("[WEBHOOK] STRIPE_WEBHOOK_SECRET is not configured!")
|
||||||
|
raise HTTPException(status_code=500, detail="Webhook secret not configured")
|
||||||
|
|
||||||
event = stripe.Webhook.construct_event(
|
event = stripe.Webhook.construct_event(
|
||||||
payload, sig_header, config.STRIPE_WEBHOOK_SECRET
|
payload, sig_header, config.STRIPE_WEBHOOK_SECRET
|
||||||
)
|
)
|
||||||
|
@ -253,6 +259,12 @@ class WebhookService:
|
||||||
prev_status = previous_attributes.get('status')
|
prev_status = previous_attributes.get('status')
|
||||||
prev_default_payment = previous_attributes.get('default_payment_method')
|
prev_default_payment = previous_attributes.get('default_payment_method')
|
||||||
|
|
||||||
|
logger.info(f"[WEBHOOK] Subscription updated: id={subscription['id']}, "
|
||||||
|
f"status={subscription.status}, prev_status={prev_status}, "
|
||||||
|
f"has_payment={bool(subscription.get('default_payment_method'))}")
|
||||||
|
logger.info(f"[WEBHOOK] Previous attributes: {previous_attributes}")
|
||||||
|
logger.info(f"[WEBHOOK] Account ID from metadata: {subscription.metadata.get('account_id')}")
|
||||||
|
|
||||||
if subscription.status == 'trialing' and subscription.get('default_payment_method') and not prev_default_payment:
|
if subscription.status == 'trialing' and subscription.get('default_payment_method') and not prev_default_payment:
|
||||||
account_id = subscription.metadata.get('account_id')
|
account_id = subscription.metadata.get('account_id')
|
||||||
if account_id:
|
if account_id:
|
||||||
|
@ -274,9 +286,25 @@ class WebhookService:
|
||||||
|
|
||||||
logger.info(f"[WEBHOOK] Marked trial as converted (payment added) for account {account_id}, tier: {tier_name}")
|
logger.info(f"[WEBHOOK] Marked trial as converted (payment added) for account {account_id}, tier: {tier_name}")
|
||||||
|
|
||||||
|
# Handle trial end (transition from trialing to any other status)
|
||||||
if prev_status == 'trialing' and subscription.status != 'trialing':
|
if prev_status == 'trialing' and subscription.status != 'trialing':
|
||||||
account_id = subscription.metadata.get('account_id')
|
account_id = subscription.metadata.get('account_id')
|
||||||
|
|
||||||
|
# Fallback: try to get account_id from customer if not in metadata
|
||||||
|
if not account_id:
|
||||||
|
logger.warning(f"[WEBHOOK] No account_id in subscription metadata, trying customer lookup")
|
||||||
|
customer_result = await client.schema('basejump').from_('billing_customers')\
|
||||||
|
.select('account_id')\
|
||||||
|
.eq('id', subscription['customer'])\
|
||||||
|
.execute()
|
||||||
|
|
||||||
|
if customer_result.data and customer_result.data[0].get('account_id'):
|
||||||
|
account_id = customer_result.data[0]['account_id']
|
||||||
|
logger.info(f"[WEBHOOK] Found account_id {account_id} from customer {subscription['customer']}")
|
||||||
|
else:
|
||||||
|
logger.error(f"[WEBHOOK] Could not find account for customer {subscription['customer']}")
|
||||||
|
return
|
||||||
|
|
||||||
if account_id:
|
if account_id:
|
||||||
if subscription.status == 'active':
|
if subscription.status == 'active':
|
||||||
logger.info(f"[WEBHOOK] Trial converted to paid for account {account_id}")
|
logger.info(f"[WEBHOOK] Trial converted to paid for account {account_id}")
|
||||||
|
|
Loading…
Reference in New Issue