I'm handling billing via Stripe + Laravel Cashier + Checkout in my application.
In order to provision the subscription after the confirmed payment I'd like to listen for the checkout.session.completed event.
However my code has to run AFTER cashiers internal subscription handling, so I went with WebhookHandled instead of WebhookReceived.
After wondering why my function doesn't run I checked which events are received by my StripeEventListener and I had to notice that only the customer.subscription.created and customer.subscription.update events are received.
When switching back to WebhookReceived it works just fine and I can access all events, including my required checkout.session.completed.
Any idea why cashier doesn't provide me with those events when using WebhookHandled?
There’s no handleCheckoutSessionCompleted action in that controller, so that if statement will never be entered and the WebhookHandled event won’t be dispatched.