ParabolInc / parabol

Free online agile retrospective meeting tool
https://www.parabol.co/
Other
1.91k stars 326 forks source link

fix: handle failed 3DS payments #9924

Closed mattkrick closed 3 months ago

mattkrick commented 3 months ago

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 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.