A trial-with-card subscription is already subscribed() (status trialing) by the time the webhook lands, so /billing/processing usually mounts already-active and the false->true poll transition the event depended on never happened — only 3 of 66 real subscriptions emitted checkout.completed. Complete the purchase from whichever path runs first (onMounted when already active, or the poll transition), de-duplicated per checkout session via a one-time Cache::add gate on session_id so back-button/refresh can't re-fire. |
||
|---|---|---|
| .. | ||
| Api | ||
| App | ||
| Auth | ||
| Webhooks | ||
| Controller.php | ||