depsimon/nova-stripe-checkout-field
A Laravel Nova field that adds Stripe Checkout to your admin panel, letting you create payment and subscription checkout sessions directly from Nova resources with minimal configuration.
Before installing anything, confirm viability: this package was last released in August 2018, targets Laravel Nova 1.x, and is archived. It will not run on Nova 2/3/4 without rewriting the field. Treat it as a reference implementation, not a dependency.
If you are evaluating it on a legacy Nova 1.x app:
composer require depsimon/nova-stripe-checkout-fieldconfig/app.php.php artisan vendor:publish --provider="Depsimon\NovaStripeCheckoutField\..." — check the provider class for the exact tag..env: STRIPE_KEY (publishable) and STRIPE_SECRET (secret). Never pass the secret to the frontend; only the publishable key should be exposed in field meta.fields() method and load the detail view of a record.Where to look first, in order:
composer.json — the hard version constraints on laravel/nova, stripe/stripe-php, and PHP tell you immediately whether it can coexist with your app.src/ — what fluent setters exist (plan, amount, currency, success/cancel URLs) and what it puts in meta().resources/js/ — what the button does on click and where it redirects.First use case: put the field on an Order (or User) detail view, click the button in a test-mode Stripe account, pay with 4242 4242 4242 4242, and confirm both the redirect back to Nova and a checkout.session.completed webhook arrive. If that path works end to end, the package is at least minimally functional; only then consider production use.
->onlyOnDetail() and, if the field supports it, ->canSee() tied to a policy so unauthorized users never see a payment CTA.StripeCheckout::make('Checkout')
->plan('plan_xxx')
->amount(4900)
->currency('usd')
Amounts are in the smallest currency unit (cents). Keep plan/price IDs in config rather than hardcoding them in the resource.checkout.session.completed (and checkout.session.async_payment_succeeded for delayed methods) in a webhook controller, verify the Stripe signature, and update the order idempotently using the session ID as a unique key.metadata (order ID, user ID, Nova resource ID) when creating the session so the webhook can find the right model without trusting the redirect.payment_method_types, billing_address_collection, success URL requirements). Code written against the 2018 API will either error or silently misbehave in live mode.stripe/stripe-php to an old major. That can conflict with Laravel Cashier or your own Stripe integration. Check composer why stripe/stripe-php before installing.meta(). Grep the source for STRIPE_SECRET/secret to confirm it is never serialized to the browser.onlyOnDetail().php artisan route:list | grep -i stripe to find the package endpoint, storage/logs/laravel.log for controller errors, and the Stripe Dashboard's Events log to see whether a session was created at all.meta() and options, override or replace the Vue component to change button behavior, and swap the package route for your own controller. Because the package is small and unmaintained, a 100-line custom Nova field plus a checkout.session.completed webhook handler is usually a safer long-term choice than depending on it.How can I help you explore Laravel packages today?