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

Paybox Bundle Laravel Package

plemi/paybox-bundle

Symfony bundle that streamlines Paybox payment gateway integration in PHP applications, offering merchant configuration, payment request setup, and callback handling for secure online transactions.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — the framing is wrong. Despite the brief, plemi/paybox-bundle is a Symfony bundle, not a Laravel package. The Bundle suffix, the Plemi\...Bundle namespace convention, and the DependencyInjection/Resources/config/services.xml layout are all Symfony hallmarks of the Symfony 2.x/3.x era. There is no ServiceProvider, no facade, no config/paybox.php publishable config. Any plan that assumes "composer require and go" in a Laravel app is based on a false premise and should be corrected before estimation.

What it actually is. A thin wrapper around Paybox's legacy hosted-redirect payment flow: build a set of PBX_* form fields (site number, rang, identifiant, amount, currency, command reference, return-URL encoding, timestamp), sign the payload with an HMAC key, redirect the customer to Paybox's payment page, then verify the signed response on return and/or on Paybox's server-to-server callback. The code volume is small — realistically a few hundred lines across a signer, a form/parameter builder, and a controller or event listener. The value is in the reference encoding of Paybox's signature and parameter conventions, not in the framework plumbing.

Integration feasibility — moderate, but not as a dependency. Three viable paths:

  1. Depend on it directly — only realistic if the target app is a legacy Symfony 2/3 application. Composer constraints almost certainly pin old symfony/http-foundation and PHP versions, which will conflict-resolve against any modern app.
  2. Vendor/fork it — extract the HMAC signing and verification into framework-agnostic classes and drop the bundle scaffolding. Low effort, removes the framework coupling and the abandoned-dependency risk in one move.
  3. Use it as a spec, not a library — read it to learn Paybox's parameter names, signature construction, and response-code semantics, then implement against current Paybox documentation or a maintained SDK.

Technical risk — high, concentrated in abandonment rather than code quality.

  • 12 stars, 0 dependents, no visible activity. There is no community to absorb a CVE, no one to answer an issue, and no guarantee the repo survives a GitHub account change. Treat it as unmaintained until proven otherwise.
  • Cryptographic age. Legacy Paybox integrations were built around HMAC-SHA1. SHA-1 is deprecated; Paybox has long supported stronger hashes. Shipping SHA-1 in a payment path in 2024+ is a finding your security review will raise, and possibly a compliance one.
  • PCI DSS surface. The upside is real: a full-page redirect keeps card data entirely off your infrastructure, which typically keeps a merchant in SAQ A rather than SAQ D. Preserve that property — do not let anyone "improve" this into an iframe or a direct-POST card form without a scope re-assessment.
  • No test suite, no fixtures, no sandbox harness is the expected state here, which means every behavior must be re-validated against Paybox's preprod environment rather than trusted.

Key questions to answer before committing:

  1. Is Paybox still our PSP, and is this API version still supported? Paybox has been migrating customers toward newer platforms and APIs. If the classic PBX_* redirect flow is being sunset for our contract, this package is moot regardless of its quality.
  2. What PHP and Symfony versions does composer.json allow, and does it install cleanly on our runtime?
  3. Does it implement the server-to-server callback (PBX_REPONDRE_A) and signature verification, or only the browser return? Browser-return-only is exploitable — a customer can close the tab after paying.
  4. How is the HMAC key configured, and does anything log it? Key handling in a 2012-era bundle frequently means a parameter in config.yml.
  5. Is PBX_TOTAL handled in minor units (cents) explicitly, or is that left to the caller?
  6. What response codes does it treat as success — does it check PBX_R against 00000, or just presence of a callback?

Integration Approach

Stack fit. Poor for Laravel, acceptable for legacy Symfony, neutral-to-good as a reference implementation. If the target is Laravel — as the brief implies — do not attempt to install this. Laravel has no bundle loader, no AppKernel, no services.xml compiler pass. The bundle's only Laravel-relevant content is the signing logic, which is framework-neutral.

Recommended migration path (Laravel or modern Symfony):

  1. Spike against Paybox preprod first. Before writing any code, stand up a throwaway script that submits a signed form to Paybox's test environment and confirms a full round trip. This validates the PSP contract and your credentials in half a day and de-risks everything downstream.
  2. Extract, don't depend. Copy the signer and parameter builder into app/Services/Paybox/ (Laravel) or a small internal package. Strip Symfony DI, OptionsResolver, and the bundle extension. The result is typically 150–250 lines.
  3. Wrap in native idioms. A Laravel service provider binding a PayboxGateway singleton, a config file seeded from PAYBOX_* env vars, a PayboxController for the return and IPN routes, and a queued job or event for post-payment provisioning. In Symfony, a plain service definition with autowiring.
  4. Add what the bundle never had: signature verification as a first-class guard, structured logging of every callback (masked), and idempotency keyed on PBX_CMD.

Compatibility. Expect friction on PHP 8.x (implicit nullable parameters, dynamic properties, each()-era idioms are all plausible in code of this vintage), on PSR-4 vs PSR-0 autoloading, and on any transitive Symfony constraint. Budget a day for the fork to run clean on a modern runtime.

Sequencing. PSP contract confirmation → preprod round-trip spike → extract/port → signature verification and idempotency hardening → IPN handler with retry semantics → reconciliation reporting → production cutover behind a feature flag. Do not sequence it as "install package → configure → ship"; that path assumes a maintained dependency that does not exist here.

If Paybox is not a hard requirement, evaluate maintained alternatives before porting — the Omnipay ecosystem or an official/regional SDK will carry ongoing maintenance and hash-agility that this bundle cannot.

Operational Impact

Maintenance. The realistic steady-state cost is low if you fork: a few hundred lines of stable, rarely-changing signing code that your own team owns. It becomes high if you consume the package as a dependency — you inherit an unmaintained transitive graph with no upgrade path and no upstream to file against. The 0-dependents figure is the strongest signal in the whole dataset: no one else has validated this against a production Paybox integration that you can learn from.

Support. None. No maintainer SLA, no issue triage, no security contact. Paybox-side support will not debug a third-party PHP bundle; they will point at their protocol documentation. Your on-call engineer is the support tier.

Scaling. Not a concern. Hosted-redirect payment initiation is a low-volume, human-paced operation — even a busy merchant does single-digit transactions per second at peak. HMAC signing is microseconds. The redirect architecture also offloads all card capture, fraud screening, and 3-D Secure orchestration to the PSP, which is a scaling advantage. The only scale-sensitive surface is the callback endpoint's availability during traffic spikes, and that is an infrastructure problem, not a package problem.

Failure modes to design for explicitly:

  • Signature mismatch — key rotation without redeploy, character-encoding drift on PBX_CMD, or a proxy rewriting the callback body. Must fail closed and alert.
  • Browser-return-only confirmation — customer pays, closes the tab, order never provisions. Mandate the S2S callback as the source of truth; treat the browser return as cosmetic.
  • Currency-unit bugs — amounts submitted in major units instead of minor units produce 100× overcharges. This is the single most common defect in Paybox integrations and must be unit-tested.
  • Callback replay / double provisioning — Paybox retries callbacks that do not return HTTP 200. Without idempotency on PBX_CMD, customers get double-provisioned or double-credited.
  • Silent misconfiguration — a wrong PBX_REPONDRE_A URL in the Paybox back office means callbacks never arrive and nothing in your application logs an error, because nothing is ever called. Detect with a reconciliation job rather than a health check.
  • Unverified success — treating any callback as a successful payment. Verify PBX_R equals the authorization code and that the signature validates.

Ramp-up. Code comprehension is trivial — a mid-level engineer reads the whole package in an afternoon. The real ramp-up cost is domain knowledge: Paybox's back-office configuration, the PBX_* parameter contract, response-code semantics, preprod vs production endpoint differences, and test-card behavior. Budget the ramp-up as Paybox onboarding plus payment-flow fundamentals, roughly one engineer-week to first confident production transaction, with most of that spent on sandbox round-trips rather than on the package itself.

Verdict. Do not adopt as a runtime dependency. Use it as a compact, readable reference implementation of Paybox's signing contract, port the essentials into code you own, and validate every behavior against Paybox preprod before trusting any of it. The package's 12 stars and 0 dependents are not a reason to dismiss it — the code is small and legible — but they are a decisive reason not to depend on it.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin