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

Webpay Bundle Laravel Package

quartet/webpay-bundle

Quartet WebPay Bundle integrates WebPay payment services into Symfony/PHP applications, with configurable service wiring and a streamlined setup for handling payment requests and responses. It reduces boilerplate so you can add WebPay support quickly while keeping payment configuration centralized a...

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. There is no architecture fit for a Laravel application, and the framing should be corrected before any planning: quartet/webpay-bundle is a Symfony 2 bundle, not a Laravel package. A Symfony Bundle is not a portable Composer library — it declares a container extension, ships Resources/config/services.yml, and expects registration in AppKernel. Laravel has no bundle system, no AppKernel, and a different container and event lifecycle. There is no first-class path to composer require this into a Laravel app and have it work. Architecture fit is therefore "reference implementation," not "dependency."

Integration feasibility. Low without a rewrite. The realistic route is: vendor the source, extract only the WebPay API client/charge logic (likely a thin wrapper over webpay/webpay), discard all DI wiring, and re-expose it through a Laravel service provider plus facade with config in config/services.php. That is a copy-and-modernize job, not an integration job. Effort is small in absolute terms (a few hundred LOC), but the extracted code inherits the parent's age.

Technical risk — the dominant concern. Three compounding problems:

  1. Ecosystem EOL. Symfony 2 reached end of life in November 2018 (2.8 LTS). The code targets PHP 5.x-era idioms. Running it on PHP 8.x will surface breaking changes (Guzzle major-version drift, removed APIs, dynamic-property deprecations, old TLS defaults).
  2. Vendor lifecycle. WebPay (webpay.jp) is the Japanese card gateway whose service was wound down and absorbed into Stripe. Any dependency on a defunct or transitioned gateway is a business-continuity issue, not a code-quality issue. Confirm merchant onboarding, sandbox access, and the migration path to the successor directly with the provider before any further evaluation — this alone can end the project.
  3. Adoption signal is zero. Score 0, no stars recorded, zero dependents, no maintainers. There is no downstream population exercising this code, no issue history to mine, and likely a single author. Treat every line as unvetted, and specifically audit for cardholder data leaking into logs and for any client-side handling of PANs.

Also verify the LICENSE file. No license means no legal right to use or redistribute — common in abandoned bundles and an immediate blocker for a payments codebase.

Key questions.

  • Is WebPay (or its successor API) still available to our entity, with a test merchant account and sandbox credentials?
  • What is the repository license, and can legal accept it?
  • Which WebPay SDK/API version does this wrap, and does the upstream SDK still receive patches?
  • Does the bundle handle 3-D Secure, tokenization, idempotency keys, and webhook signature verification at all — or only the happy-path charge call?
  • Is there any PCI scope reduction (hosted fields / client-side tokenization), or does card data transit our servers?
  • JPY is a zero-decimal currency — does the amount handling assume minor units incorrectly?
  • Who owns the fork if we extract code, and is there budget to maintain it?

Integration Approach

Stack fit. Mismatch at every layer except the HTTP calls themselves. Symfony bundle → Laravel service provider; YAML service definitions → container bindings; Symfony EventDispatcher → Laravel events; ParameterBag config → config/services.php + .env/secrets manager; Symfony HttpClient/Guzzle → Laravel's HTTP client or a pinned Guzzle. The only genuinely reusable artifact is the request/response shape of the WebPay token-and-charge API.

Migration path (recommended). Do not migrate this bundle. Instead:

  1. Use it as documentation: read the charge/token/refund call sequences to learn the WebPay API contract.
  2. Build a gateway abstraction in Laravel — a PaymentGateway interface (tokenize / charge / refund / capture) with a WebPay-shaped adapter registered in a service provider, config in config/services.php, secrets in the environment.
  3. Implement the actual adapter against a supported provider (Stripe, PAY.JP, GMO Payment Gateway, VeriTrans, Komoju — selection driven by Japanese market coverage and settlement currency). The legacy bundle informs the interface design, including refund and partial-capture semantics it exposes.
  4. Keep card data off our servers via hosted fields / client-side tokenization so the PCI footprint stays at SAQ-A.

Compatibility. No PHP-version compatibility guarantee; assume PHP 5.6–7.x idioms and validate against our runtime before estimating. Confirm the webpay/webpay SDK constraint — if it pins Guzzle 3/5, it cannot coexist with a modern Laravel HTTP stack in the same dependency graph, which is another reason to extract rather than install.

Sequencing.

  1. Gate 0 (non-negotiable): confirm the gateway is commercially available to us and the license is acceptable. Nothing else proceeds until both clear.
  2. Spike: extract the API-call logic into a standalone class, run it against a sandbox, document the wire format.
  3. Define the PaymentGateway interface and contract tests with recorded fixtures.
  4. Implement against the supported production provider; wire config and secrets management.
  5. Reconciliation, webhook handling, and failure-path tests; then cut over behind a feature flag.

Sequencing note for a TPM: the whole extraction is a 1–2 day spike plus a few days of adapter work. Schedule it after Gate 0, never in parallel with it — if the gateway is dead, that engineering time buys nothing.

Operational Impact

Maintenance. Effectively abandoned upstream. Forking means we own it permanently — every PHP upgrade, Guzzle bump, TLS/cipher change, and CVE in the HTTP layer is ours to patch. An unmaintained payments library should be treated as a standing security liability, not technical debt: there is no CVE feed, no security contact, and no patch SLA. For a TPM this translates into an unbudgeted, recurring on-call obligation with no vendor to escalate to.

Support. No community, no reachable maintainers, no Stack Overflow corpus, no issue history. Internal runbooks must be written from source reading alone — assume no tribal knowledge exists anywhere in the org and that the author of any extracted code has left by the time it breaks.

Scaling. Payment volume is low relative to application traffic, so raw throughput is not the constraint; correctness under retry is. The typical failure profile here is absent idempotency keys, no retry/backoff policy, no timeout tuning, no circuit breaker, synchronous gateway calls inside user-facing requests, and no webhook/async reconciliation. These must be designed into the abstraction layer regardless of provider — they are the requirements a TPM should carry forward from this evaluation even if the library itself is discarded.

Failure modes to plan for.

  • Silent double charge on retry without idempotency — the highest-severity outcome; needs an internal idempotency key and a daily reconciliation job.
  • Cardholder data in logs — compliance violation; requires log scrubbing at the adapter boundary and a review checkpoint before launch.
  • Amount/currency errors — JPY zero-decimal mishandling causes 100× overcharges; needs an explicit test case.
  • Dead endpoints — if the gateway is truly retired, failures present as generic HTTP errors rather than a clear "vendor gone" signal.
  • Dependency resolution failure — legacy Guzzle pins blocking unrelated framework upgrades in the same Composer tree.
  • Unpatched vulnerability with no upstream to notify us.

Ramp-up. Reading the code is fast; understanding it safely is not. An engineer unfamiliar with Symfony bundles pays a translation tax, and the real ramp-up cost is domain knowledge: Japanese card acquiring, settlement cycles, refund and partial-capture rules, and PCI scope. Budget for a payments-competent reviewer, not just a PHP reviewer. Expect 1–2 days of senior engineer time to mine the bundle for API knowledge and size the replacement, plus sandbox access as a hard prerequisite.

Recommendation to the business: do not adopt as a dependency; mine it for API knowledge and build a first-party PaymentGateway driver on a supported provider. The library's value here is purely as a free specification of a small integration — a few hundred lines, card data never touching our servers, sitting behind an interface we control.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
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