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

Payment Sips Bundle Laravel Package

kptive/payment-sips-bundle

A Symfony bundle for integrating the SIPS (Atos Worldline) payment gateway, providing configuration and services to process payments. Check maintenance status and Symfony/PHP compatibility before adopting.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — a hard mismatch with the stated stack. This is not a Laravel package. kptive/payment-sips-bundle is a Symfony 2-era bundle that registers an Atos Worldline SIPS v1 provider as a plugin into JMSPaymentCoreBundle (the JMS Payment abstraction). It depends on Symfony's bundle registration, DI container extension/config loading, tagged service discovery, and the PaymentPluginInterface contract. Laravel has none of those seams: no bundle manifest, no JMS plugin registry, no Symfony service definitions consumed the same way. A composer require into a Laravel application is not a viable starting point. Worse, the Laravel developer assessment indicates the package glue shells out to Atos SIPS CGI binaries (request / response), which is both a Symfony-coupled and a host-environment-coupled integration.

Integration feasibility — small core, non-trivial extraction. The genuinely portable logic is narrow: building the SIPS payment request (merchant ID, amount in gateway minor units, currency, customer language, order reference), signing/encoding parameters, constructing the redirect form, and parsing the asynchronous callback plus merchant return (DATA= blob decryption and response-code mapping). That is a few hundred lines of plain PHP against a specific SIPS generation. Extracting it and re-hosting it behind a Laravel service provider is realistic. Reusing the repository as a dependency is not.

Technical risk — high, with protocol-age as the dominant concern.

  • Abandonment: 1 star, 0 dependents, negligible community signal (score 0.035 reflects no adoption). Assume no upstream fixes, no security response, no PHP 8.x compatibility work. You will fork and own it.
  • Transitive abandonment: JMSPaymentCoreBundle is itself legacy/maintenance-only. A Symfony shop adopting this inherits two dead layers.
  • Protocol generation risk: SIPS is the legacy Worldline gateway (bank-branded Mercanet, Scellius, Elys, Cyberplus). Worldline's direction is SIPS 2 / modern acquiring APIs. Whether the target bank still provisions SIPS 1 — and which connector (pathfile/file-based vs. HTTP vs. CGI binaries) — must be confirmed before any engineering hour is committed.
  • PCI/compliance posture: the hosted-page redirect keeps card data out of scope, which is correct, but signature verification and callback trust must be re-implemented deliberately, not inherited. The code predates SCA/PSD2 and 3DS2; it will not satisfy a current auditor as-is.
  • Binary dependency: shelling out to SIPS CGI executables introduces host provisioning, permissions, and portability concerns that a pure-PHP integration avoids.

Key questions for the acquirer and the team:

  1. Which SIPS generation and connector does our bank contract actually provision, and does it match this bundle's CGI-binary assumptions?
  2. Does the bank offer an official SDK or a current REST API? If so, is this repository relevant at all?
  3. What PHP/framework versions does the code target, and what breaks on our runtime (deprecated functions, type strictness, hash_equals)?
  4. Do we need authorize/capture only, or refunds, 3-D Secure challenges, multi-currency — and which of those are implemented versus stubbed?
  5. Who owns the forked code, and how do we test without sandbox credentials (often weeks of bank lead time)?
  6. Is our runtime environment permitted to execute third-party CGI binaries in the payment path, or does platform policy forbid it?

Integration Approach

Stack fit. Poor as a dependency; workable as protocol documentation. Treat the repository as a reference implementation of the SIPS wire format and CGI invocation, not as a library to install. The correct integration target is a thin first-party Laravel package: a service provider, a published config (merchant_id, pathfile/endpoint, currency, mode, sandbox), a SipsGateway exposing authorize() / handleReturn() / handleCallback(), and a controller for the merchant return URL plus an endpoint for the asynchronous callback.

Migration path (recommended sequencing):

  1. Confirm the bank contract first. Before code: verify SIPS generation, connector type, sandbox credentials, and whether CGI binaries are required or a pure HTTP request path exists. This is the gating step — if the contract doesn't match, the initiative is blocked, not merely slowed.
  2. Spike extraction. Stand up a Laravel 11 / PHP 8.3 app, copy request-building and response-parsing routines out of the plugin, strip JMS/Symfony types, and drive them against the bank test environment. Decide explicitly whether to keep the CGI-binary path or reimplement the request in pure PHP.
  3. Rebuild as a package. Wrap extracted logic in an internal laravel-sips package with a facade, published config, events (PaymentSucceeded, PaymentFailed), and idempotent callback handling keyed on the gateway reference. Persist every transaction with its gateway reference before redirecting the customer.
  4. Isolation fallback. If extraction reveals hidden coupling to the CGI binaries or Symfony runtime, run a minimal Symfony service exposing the gateway over HTTP. This buys time at the cost of an extra deployable and a network hop inside the payment path — acceptable only as a stopgap.

Compatibility. Pin and document PHP support explicitly. Expect to modernize type hints, replace deprecated string/array functions, and enforce strict signature comparison (hash_equals). Replace framework-bound HTTP/file handling with Laravel's Http client or Guzzle so the resulting package carries no Symfony dependency. If CGI binaries are retained, containerize them and document the host contract as part of the package's deployment requirements.

Sequencing. Land the gateway package and its unit tests (request formatting, signature verification, response parsing, currency minor-unit handling) before touching checkout UI. Ship behind a feature flag with manual QA in the bank sandbox per currency and per 3-D Secure path. Do not parallelize UI work ahead of a verified sandbox transaction.

Operational Impact

Maintenance. Assume full ownership from day one. Fork under the organization, add CI (PHPUnit plus static analysis), and document the exact SIPS spec version and connector the code targets. If the CGI binaries are retained, add an inventory item for their version and provisioning. Set a recurring review cadence — not because the code churns, but because an unmaintained payment dependency and an unpatched binary in the payment path are standing audit findings. Track upstream for reference only; expect no patches.

Support. Two distinct channels that must not be conflated: (a) bank/Worldline for contract, credentials, pathfile/endpoint changes, binary updates, and settlement issues — a commercial relationship, not GitHub; (b) internal for code, since there is no community and zero dependents. A live payment outage escalates through the acquirer's support desk, so capture those contacts and SLAs in the runbook before launch. Document who on the team holds the fork's ownership.

Scaling. The hosted-page redirect model scales trivially: infrastructure handles a redirect out and a callback in, and load tracks order volume, not payment complexity. Constraints are callback throughput (queue the handler, acknowledge fast, process asynchronously) and database contention on the transaction table. There are no long-lived gateway connections, provided the flow stays asynchronous. If CGI binaries are in the request path, treat them as a per-request process cost and confirm they handle concurrency under expected peak order rate.

Failure modes to instrument explicitly:

  • Silent callback failure: customer sees success, order never confirmed. Mitigate with a reconciliation job polling unsettled transactions against bank reporting, plus idempotent callbacks keyed on gateway reference.
  • Signature/response mismatch: misconfigured pathfile or key produces uniform verification failures that resemble fraud. Alert on verification-failure rate, not individual errors.
  • Amount/currency formatting: minor-unit and decimal-comma conventions are a classic off-by-100 source. Assert per currency in tests.
  • Duplicate capture / double submission: browser refresh on the return URL must not re-trigger authorization.
  • CGI binary failure or absence: if the runtime loses the executables, permissions, or a dependency, every payment attempt fails at once. Health-check the binary path and alert distinctly from gateway errors.
  • Endpoint or pathfile rotation: banks change these, sometimes without notice. Keep endpoint config dynamic and monitor connection errors as a separate alert class.

Ramp-up. Low for a PHP developer on the code itself — the protocol is simple and the surface small. The real ramp cost is domain and vendor knowledge: understanding the bank's SIPS branding, sandbox provisioning lead time (often weeks), CGI-binary deployment requirements, and settlement/reconciliation semantics. Budget one engineer with payments context plus bank-side onboarding time, and plan around the sandbox credential wait — not the port — as the critical path.

Bottom line. The package is not usable as a Laravel dependency and carries genuine abandonment and protocol-age risk, but the SIPS protocol logic it documents is a reasonable starting point for a small, owned integration. Proceed only if the target bank confirms a matching SIPS endpoint generation and connector, and only if the effort is scoped as "build a thin first-party gateway" rather than "adopt this bundle." If Worldline offers a current REST API for the account — or the bank offers an official SDK — prefer it and skip this repository entirely.

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