johnrivera7/filament-flow
Filament Flow is a Laravel/Filament plugin for building and managing flow-based workflows directly inside your admin panel. Model multi-step processes, visualize progress, and move records between stages without leaving your existing resources, forms, and tables. Simple to install and extend.
Architecture fit. Filament Flow v1.0.0 is a thin, opinionated integration layer between a Laravel application and Flow.cl (Chilean payment processor), packaged as a first-party-style Filament plugin. Architecturally it splits into four concerns: (1) a Filament settings page plus a reusable credentials schema, (2) an HMAC-SHA256 signer that produces Flow's s parameter, (3) FlowGateway as the API boundary (create, createEmail, getStatus, refund), and (4) a Blade checkout redirect view. This is a reasonable shape for a redirect-based (hosted checkout) integration — card data never touches the application, so PCI scope stays at SAQ-A-eligible, and the gateway class gives us a natural seam to wrap behind our own PaymentProvider interface for provider portability.
Integration feasibility. The happy path is short: configure credentials in the panel, call FlowGateway::create(), redirect to Flow with url?token=, and poll/receive status. Realistically this is a 1–2 sprint lift including sandbox certification, not the "install and go" the release notes imply, because the confirmation callback is not addressed. Flow posts a confirmation to a merchant-registered URL containing a token; the merchant must then call getStatus and acknowledge by HTTP 200. The package exposes getStatus, so the callback is buildable, but the absence of a route/controller means we own idempotency, replay protection, and the acknowledgement contract ourselves. That is the single largest scoping gap in v1.0.0.
Technical risk.
Key questions.
refund full-only or partial, and what does it return on Flow error codes?createEmail documented with the required Flow email-flow prerequisites, and does it fall back sensibly?Stack fit. Good fit if we are on Filament 4 with a panel already in place: the settings page and credentials schema drop into the admin surface and remove the "edit .env for the payment gateway" operational smell. Laravel 11 + Filament 4 is the sweet spot. If we are not a Filament shop, roughly half the value evaporates — we get a gateway class, a signer, and a Blade view, which is a modest amount of code we could own directly.
Migration path. No prior Flow integration in our baseline, so this is greenfield rather than a migration. If a parallel effort exists using Flow's raw SDK or hand-rolled cURL, migrate incrementally: keep our existing Order/Payment models as the source of truth, adopt FlowGateway for create/getStatus/refund, and retire custom signing code only after sandbox parity. Do not let the package own persistence — it doesn't ship any.
Compatibility. Verify PHP version floor, Filament panel requirement for the settings page, and whether the checkout view is panel-coupled. Confirm the Flow API version pinned by developers.flow.cl docs matches the gateway's assumptions.
Sequencing.
FlowGateway behind our own PaymentProvider interface (non-negotiable for exit risk).create → redirect flow end-to-end behind a feature flag.getStatus, idempotent state transition, 200 acknowledgement, duplicate-safe.pending via getStatus.Maintenance. Low code footprint, but a young package: budget for pinning a known-good version and a quarterly review of upstream releases. The broad version envelope raises the chance of transitive dependency churn on Filament majors. Owning the confirmation endpoint means we absorb Flow's contract changes regardless of what the package does.
Support. No stated support model; assume community/self-support. Internal runbook must cover: signature mismatch diagnosis, token expiry, sandbox vs production credential drift, and Flow error-code mapping. Finance/ops will need a manual reconciliation procedure for the first months.
Scaling. create and refund are synchronous outbound HTTP calls — they must not sit in user-facing request paths beyond a single redirect, and must carry timeouts plus a retry policy that is safe (no blind retries on create, which is not idempotent by default and can produce duplicate charges). Webhook volume is low; the real scaling concern is correctness under retries and out-of-order delivery, not throughput. Reconciliation via getStatus should be queued and rate-limited to respect Flow's limits.
Failure modes. Signature errors fail opaquely and are the most likely day-one incident. Missed or non-acknowledged confirmations leave orders in limbo — hence the scheduled reconciliation. Duplicate confirmations cause double-fulfilment without idempotency. Token expiry breaks slow user redirects. Refund semantics unknown → finance risk if partials are needed.
Ramp-up. One backend engineer comfortable with Filament and HTTP integrations: ~2–3 days to sandbox parity on the happy path, plus 3–5 days for confirmation handling, reconciliation, and hardening. The binding constraint is commercial, not technical — a Flow merchant account requires Chilean entity/bank details and approval lead time. Recommend a pilot behind a feature flag with a capped order value, gated on: signer validated, duplicate-webhook test passed, and a documented manual reconciliation runbook.
How can I help you explore Laravel packages today?