When a 3DS payment fails, that causes the subscription to go from incomplete to incomplete_expired.
We had a webhook handler that would set the stripeSubscriptionId to whatever was coming in from stripe, even if the incoming subscription was expired!
That chain of logic would attach an expired stripeSubscriptionId onto an organization, and when they tried to upgrade again, it would fail because they already had a subscription 🤮
this checks to make sure the subscription is valid before updating the Organization.stripeSubcriptionId.
Additionally, i noticed that after an upgrade failed, if you click the upgrade button again, it doesn't do anything except remove the error message. That felt bad, so I fixed that logic.
Description
When a 3DS payment fails, that causes the subscription to go from incomplete to incomplete_expired. We had a webhook handler that would set the
stripeSubscriptionId
to whatever was coming in from stripe, even if the incoming subscription was expired! That chain of logic would attach an expiredstripeSubscriptionId
onto an organization, and when they tried to upgrade again, it would fail because they already had a subscription 🤮this checks to make sure the subscription is valid before updating the
Organization.stripeSubcriptionId
. Additionally, i noticed that after an upgrade failed, if you click the upgrade button again, it doesn't do anything except remove the error message. That felt bad, so I fixed that logic.