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

Paymentsips Bundle Laravel Package

jrk/paymentsips-bundle

Symfony bundle for PaymentsIPS integration, providing configuration and services to add payment processing to Symfony applications. It helps wire payment flows with less boilerplate and quicker setup, making PaymentsIPS gateway adoption straightforward.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a Symfony2 bundle, not a Laravel package, and that distinction defines the entire evaluation. The delivery mechanism is incompatible: it expects AppKernel registration, Symfony DI container service definitions (XML/YAML), a DependencyInjection/*Extension and Configuration class, and PSR-0 autoloading. Laravel has no bundle concept, so composer require jrk/paymentsips-bundle yields no service provider, no facade, no publishable config, and no container bindings. Fit as a dependency is near zero. Fit as a reference artifact is moderate — the durable asset is the ATOS SIPS protocol work: request field assembly, seal (signature) computation, response-side seal verification, and the return/callback URL flow. The seal logic is PSP-specific, easy to get wrong, and a working example has genuine value as spec-by-example for an effort estimate.

Integration feasibility. Composer install will likely fail or be pointless on a modern runtime — Symfony2-era bundles typically pin PHP ~5.3–5.6 and symfony/* ~2.x, all EOL. Even where it installs cleanly, it delivers nothing without porting. The only feasible path is fork-and-extract: roughly 1–3 engineer-days to lift the seal and response-verification classes into a framework-agnostic namespace, plus test coverage written from scratch, plus the Laravel wrapper (config, service provider, callback job) on top of that.

Technical risk: High.

  • Symfony 2.x has been EOL since November 2018 — no security patches; every transitive dependency is a liability on a payment path.
  • 2 stars, 0 dependents, no visible CI or test suite → no community validation and no vulnerability disclosure path.
  • Payment-path code without tests is unverifiable. Seal bugs surface as silent declines or, worse, as accepted invalid responses.
  • 3-D Secure: PSD2 SCA has required 3DS2 for EU card traffic since 2021. A bundle of this vintage almost certainly implements 3DS1 or a plain redirect — non-compliant for EU cardholders.
  • License and authorship must be confirmed. Unlicensed code gives no legal right to reuse, and several small Symfony bundles ship without a clear grant.

Key questions.

  1. Which SIPS protocol and endpoint set does it target — classic SIPS/1 vs SIPS/2 / Worldline Online Payments?
  2. Does the seal implementation match our merchant contract (SHA-256 vs legacy SHA-1, field ordering, response-side seal)?
  3. Does it support 3DS2 / SCA, or only 3DS1?
  4. Which operations beyond payment: refund, cancel, duplicate detection, tokenization/one-click?
  5. License and authorship status — is reuse legally cleared?
  6. Are signing secrets ever written to logs or carried on the request object?

Integration Approach

Stack fit. Treat this as a reference implementation, not a dependency. Nothing about it maps to Laravel's container, config repository, HTTP client, or queue model. The Resources/config/routing.yml callback route and the Configuration.php parameter surface (merchant ID, country, currency, pathfile, key/cert paths) are the two artifacts worth reading closely — they tell you the real API shape you must replicate.

Migration path (recommended): fork → extract protocol layer → wrap.

  1. Fork the repo; audit the license and composer.json PHP constraints before any code moves.
  2. Read DependencyInjection/Configuration.php and the extension first — that is the actual parameter contract, and it becomes the schema for config/payments.php.
  3. Isolate seal computation, field mapping, and response verification into a PSR-4 namespace with zero Symfony imports. Keep the ATOS toolkit binaries (bin/, lib/) exactly as vendored — those are the bank's signed artifacts and must not be rewritten.
  4. Add contract tests against the SIPS test environment using known-good request/response vectors before touching production.
  5. Wrap the extracted layer in a thin Laravel service bound via a service provider; credentials in config/services.php backed by env or a secrets manager, never committed.
  6. Implement the callback as a queued job with idempotency keyed on the PSP transaction reference. Mark orders paid only from the server-to-server leg — never from the browser return.

Compatibility. Confirm the target runtime (PHP 8.2/8.3). Extracted code will likely use PHP 5 idioms — array(), missing scalar types, possibly long-removed helpers — and needs mechanical modernization. Validate behavior against Worldline's current SIPS documentation rather than trusting the bundle's own assumptions. If the contract is OSB or SIPS/2, most of the request-building code is wrong for us and the reference value collapses.

Sequencing. Sandbox protocol validation → seal correctness sign-off → callback and idempotency hardening → production canary on a low-value transaction set → full rollout. Do not build the Laravel wrapper before the protocol layer is verified; the wrapper is the cheap, low-risk part, and building it first creates the illusion of progress on an unvalidated foundation.

Alternatives to weigh first. Worldline's official SDK, a maintained Omnipay Worldline/SIPS driver, or a current French-market package. If any covers 3DS2 and the operations we need, forking a 2-star Symfony2 bundle is the wrong call. Fork only if this is the sole surviving implementation of a legacy SIPS contract we are contractually locked into.

Operational Impact

Maintenance. We own it. Upstream velocity is effectively zero, there is no issue triage, and there is no security response path. Budget for a permanently internal fork — small surface area, but indefinite. Assign a named owner and record it as a deliberate technical-debt item with a review date, not as a silent dependency.

Support. No vendor support for the package itself. PSP-side support comes from Worldline and is gated on our merchant contract; expect them to support their current API, not a Symfony2 client library. Escalation for a production payment incident routes through our own on-call, not through any upstream.

Scaling. Not a concern from this package. SIPS is a redirect/form-POST flow; load is bounded by checkout volume, and per-request work is a signature computation measured in microseconds. The real constraints are the PSP's rate limits and our callback endpoint's throughput — both governed by our infrastructure, not the bundle.

Failure modes to instrument.

  • Seal mismatch → silent declines. Log the PSP response code and seal-verification result separately; alert on any nonzero rate.
  • Callback spoofing or replay → mandatory server-side re-verification of the seal plus an idempotent state transition keyed on the PSP transaction reference. The bundle's example validates on redirect; fine for UX, insufficient for books.
  • Timeout or lost callback → reconciliation job against the PSP transaction report; never leave orders stuck in pending.
  • Currency and amount precision (SIPS uses minor units) → test explicitly; a classic rounding-bug source.
  • 3DS challenge abandonment → explicit UX state and expiry handling.

Ramp-up. Low for a PHP engineer who has integrated a payment gateway before, moderate otherwise. Estimate 3–5 days to fork, modernize, and test, plus 2–3 days for callback hardening and reconciliation, plus 2–3 days for the Laravel wrapper. The dominant cost is not the code — it is the compliance and testing discipline a payment path demands. Confirm 3DS2/SCA requirements in writing with the acquirer before committing to any of this sequencing.

Recommendation. Do not adopt as a Composer dependency. Leverage it as a protocol reference only, contingent on the license and 3DS2 answers above. If 3DS2 is required for our traffic — and for EU cardholders it is — and this bundle cannot provide it, the package cannot be leveraged at all, and the correct move is Worldline's current SDK or a maintained driver behind our own interface.

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.
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
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle