laravel / cashier-stripe

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.
https://laravel.com/docs/billing
MIT License
2.37k stars 670 forks source link

Embedded Checkout without a redirect not working #1629

Closed lowbits closed 8 months ago

lowbits commented 8 months ago

Cashier Stripe Version

14.14

Laravel Version

10.10

PHP Version

8.2

Database Driver & Version

No response

Description

Currently, it is not possible to create an embedded checkout without a redirect. Cashier sets a default value for return_url when ui_mode = 'embedded'. Stripe throws an error when return_url is set although redirect_on_compltition is set to never. It expects to not have a return_url parameter.

It should be possible to set ui_mode = 'embedded' and 'redirect_on_completion' => 'never'.

A quick fix in Checkout.php would be:


if (isset($data['ui_mode']) && $data['ui_mode'] === 'embedded') {
            $data['return_url'] = $sessionOptions['return_url'] ?? route('home');

            if(isset($data['redirect_on_completion']) && $data['redirect_on_completion'] === 'never') {
                unset($data['return_url']);
            }

        }

Steps To Reproduce

$builder->checkout([ 'ui_mode' => 'embedded', 'redirect_on_completion' => 'never', ]);

driesvints commented 8 months ago

Thanks for sending in the PR! Let's continue with that.