Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Stripe Payment Link Laravel Package

andreia/filament-stripe-payment-link

A Filament plugin for Laravel that brings Stripe payment links into your admin panel, letting you create and manage payment links for products or invoices. Streamline payment collection and share Stripe links directly from Filament without custom Stripe workflows.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Install with Composer (composer require andreia/filament-stripe-payment-link) and confirm the service provider is auto-discovered. If your app uses Filament v3, check the package's composer.json constraints before installing.
  • Publish the package config (typically php artisan vendor:publish --tag="filament-stripe-payment-link-config") and set your Stripe secret key. Prefer sourcing it from config('services.stripe.secret') / STRIPE_SECRET rather than hardcoding.
  • Register the plugin on your Filament panel (e.g. ->plugin(FilamentStripePaymentLinkPlugin::make())) where the package exposes a panel plugin; otherwise the form component/action can be used directly inside a resource form.
  • First use case: add a payment-link component or action to an existing resource form (e.g. an Order or Invoice resource) so an admin can generate a Stripe Payment Link for a given amount without leaving the panel.
  • Look first at the package's config/ file and its src/ form component/action class — that is where the Stripe API calls and amount/currency options live. In v1.1.0 the Stripe API client was bumped, so verify which stripe-php version your lockfile resolves.

Implementation Patterns

  • Resource form integration: embed the payment-link field/action in a Filament\Resources\...\Schemas\...Form or in a table action. Persist the returned Stripe URL and payment-link ID on your model so links are reusable and auditable.
  • Action-based generation: if exposed as a Filament action, wire it to a ->action(fn (Model $record) => ...) closure and store the response. This keeps generation explicit and avoids creating links on every form render.
  • Idempotency: when generating links from a model, guard against duplicates (e.g. only generate if stripe_payment_link_id is null) — Stripe Payment Links are not inherently idempotent per record, so your app should enforce one link per order/invoice.
  • Multi-currency / amount handling: pass amounts in the smallest currency unit (cents) as Stripe expects. Centralise currency and amount formatting in a service or model accessor rather than scattering it across forms.
  • Webhook follow-up: Payment Links redirect to a success URL; treat Stripe webhooks (checkout.session.completed) as the source of truth for marking records paid rather than relying on the redirect alone.
  • Panel separation: if you have admin and customer-facing panels, register the plugin only on the admin panel to avoid exposing link generation to unintended users.

Gotchas and Tips

  • v1.1.0 Stripe API bump: the release updates the Stripe API version. Run your test suite and check your stripe-php version; if you pin the API version in config (stripe.api_version) or in the package config, confirm it is still supported. Behavioural changes in Stripe responses (field renames) can surface here.
  • Dependabot-only changes: the other two PRs are dependabot/fetch-metadata bumps in CI — no runtime impact. The only runtime-relevant change is the Stripe API update.
  • Secrets: never commit the Stripe secret; use STRIPE_SECRET and ensure it is not exposed to the frontend. Test with STRIPE_KEY/test-mode keys first.
  • Config cache: after publishing config, run php artisan config:clear; stale cached config is a common cause of "key missing" errors.
  • Amount validation: Stripe rejects zero or negative amounts and unsupported currencies — validate before calling the API and surface a Filament notification on failure rather than letting the exception bubble.
  • Extension points: override the package's form component or action class via container binding or by extending it if the package allows; keep a thin wrapper so a future API bump is a one-file change.
  • Debugging: log the Stripe request/response (excluding secrets) on failure; Stripe's error messages are specific and usually point straight at the bad parameter.
  • Version pinning: given the API bump, pin andreia/filament-stripe-payment-link to ^1.1 and re-test payment-link creation in Stripe test mode after upgrading from v1.0.0.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib