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

Sylius Quickpay Plugin Laravel Package

setono/sylius-quickpay-plugin

Sylius plugin that integrates the Quickpay payment gateway, letting stores offer Quickpay checkout and payment methods through Sylius's native payment workflow. Configure credentials and payment methods in the admin, then accept card payments at checkout.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Sylius plugins are Symfony bundles that extend the core through service overrides, form types, and gateway action classes. setono/sylius-quickpay-plugin follows that convention: it registers a payment method factory, a gateway configuration form (API credentials, agreement/merchant settings), and callback routes so Quickpay can notify Sylius of authorizations, captures, and refunds. From a TPM standpoint the shape is correct for the platform — it installs as a Composer dependency into an existing Sylius application and does not require forking the core. The critical unknown is which Sylius payment abstraction it targets: Sylius has been migrating away from Payum toward its own Payment Request / state-machine flow, and a plugin that only supports the legacy path will silently lock the store into older Sylius releases.

Integration feasibility. Mechanically low-effort: composer require, enable the bundle, import routing, set credentials, create a payment method in the admin UI. The real effort is not installation but validation — confirming each payment option Quickpay exposes (card, MobilePay, Klarna, Apple Pay) actually renders and completes in a sandbox, and that SCA/3DS challenge flows return the customer to the correct Sylius order-completion route. Budget days, not hours, for test-matrix work.

Technical risk. Several flags compound:

  • Adoption signal is weak. 3 stars and 0 dependents means essentially no field validation. There is no community of integrators to surface edge cases; you will be the QA department.
  • Release metadata anomaly. The listed last release date (2026-08-24) is in the future relative to normal consumption. Treat this as a data-quality issue and verify against Packagist/tags directly before planning around it. It may indicate automated tagging, a mislabeled dev branch, or a scraped field.
  • Gateway API drift. Quickpay's API and authentication (API key + private key signing) evolve. A low-traffic plugin is unlikely to be promptly patched for breaking changes.
  • Financial correctness. Authorize/capture/partial-capture/refund/void correctness is where payment plugins fail. If the plugin only implements authorize+capture and punts on partial refunds, order state in Sylius will diverge from Quickpay's ledger and reconciliation becomes manual.
  • PCI scope. If the plugin uses Quickpay's hosted payment window (redirect), scope stays minimal (SAQ A). If it embeds card fields, scope expands dramatically. This must be confirmed early — it is the single largest compliance variable.

Key questions. Which Sylius versions are supported, and is Payum or the newer Payment Request flow used? Which Quickpay payment methods and currencies are covered? Is webhook/callback payload signature-verified, and is processing idempotent against duplicate callbacks? Are partial captures and partial refunds supported end-to-end? What is the license, and is there a CI/test suite? Who is the maintainer of record, and is there a paid support path?

Integration Approach

Stack fit. Appropriate only for shops already standardizing on Sylius + Symfony on PHP. The plugin adds no new infrastructure — no queue, no sidecar, no separate service. It rides on the same HTTP client and Doctrine entity manager as the host app. That is a genuine advantage: fewer moving parts in the payment path, which is exactly where you want fewer moving parts.

Migration path. For a greenfield Sylius build, adopt it as the native Quickpay connector and skip building a custom gateway action. For an existing store already live on another Quickpay integration (custom code, or a different plugin), do not migrate in place — stand up a second payment method alongside the existing one, route a small traffic slice to it, and only decommission the old one after a full settlement cycle has reconciled cleanly.

Compatibility. The gating factors are the Sylius minor version, the PHP version, and the Symfony major version. Pin the plugin version explicitly in composer.json and verify the constraint matrix resolves against your composer.lock before any code work. Given the low release cadence, expect to either pin Sylius to an older minor or carry a small compatibility patch. Assume from the outset that you may need to fork and maintain — that is the realistic planning baseline for a 3-star, 0-dependent package.

Sequencing.

  1. Spike: install into a disposable Sylius instance, confirm the bundle boots and the payment method form renders.
  2. Sandbox certification: run every required payment method through success, decline, 3DS challenge, and customer-abandon paths.
  3. Financial path validation: authorize → capture → partial refund, plus void, with ledger reconciliation against the Quickpay dashboard.
  4. Webhook hardening: replay and duplicate-delivery tests, signature verification, and behavior when the callback arrives before or after the customer redirect.
  5. Production canary behind a feature flag, low-value orders only, for one full settlement window.
  6. Full rollout, then document the fork-and-patch procedure.

Operational Impact

Maintenance. This is the dominant cost. With 3 stars and no dependents, upstream maintenance is effectively a single-maintainer bet. Plan for the plugin to be vendored or forked into your own namespace, with a named internal owner and a documented patch process. Budget a recurring review each Sylius minor release — the payment abstraction is the most likely thing to break, and it will break at upgrade time, not at runtime.

Support. There is no realistic vendor SLA. Internal Tier-1 support must be able to answer "my payment failed" by reading the Sylius payment state, the Quickpay transaction log, and the callback log side by side. Build that runbook during the pilot, not after the first incident.

Scaling. Throughput is not a concern: Quickpay terminates the transaction and Sylius only handles order state. The plugin will not be the bottleneck at any realistic volume. The scaling risk is operational cardinality — multiple stores, currencies, or Quickpay agreements multiplying the configuration surface, and each combination needing its own verification.

Failure modes to instrument.

  • Webhook not delivered or delivered late — order stuck in "awaiting payment" while the customer has been charged. Detect via a reconciliation sweep comparing Sylius payments to Quickpay transactions.
  • Duplicate callbacks — double capture or double-fulfillment. Requires idempotency keys on the plugin side; verify, don't assume.
  • Redirect-return race — customer returns before the callback lands, sees a pending order. Mitigate with a status-pending page plus polling.
  • Credential/agreement mismatch — silent authorization failures after a key rotation.
  • Currency or amount mismatch — rounding or minor-unit errors between Sylius and Quickpay producing rejected captures.
  • Plugin abandonment — upstream goes quiet, a Sylius upgrade blocks, and you are patching under pressure. This is the failure mode to plan around structurally.

Ramp-up. Moderate. An engineer needs working knowledge of Sylius's payment state machine, Symfony service wiring, and Quickpay's transaction model — three domains, none deep, but the intersection is where debugging time goes. Estimate one to two weeks for a competent Symfony developer to reach independent proficiency with this plugin, plus a payments-literate reviewer for the financial-path work. The absence of community documentation and zero dependent projects means that ramp-up cost is entirely yours to absorb and must be written down internally.

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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect