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

Httpclient Laravel Package

payment/httpclient

payment/httpclient is a Laravel package for making HTTP requests to payment providers. It wraps outbound payment API calls with configurable request handling and response parsing to simplify gateway integrations.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package represents a single idea: extract outbound HTTP transport behind a narrow interface so payment logic never touches curl or a concrete client. That idea is sound and maps cleanly onto Laravel's container — bind the interface, resolve it in gateway services, swap in a fake during tests. The problem is the specific interface. It implements a 2014 FIG proposal (proposed/http-client.md) that was never ratified and was effectively superseded by PSR-7 (2015) and PSR-18 (2019). Adopting it means standardizing on a contract that no modern library implements, guaranteeing we write and maintain adapters for every actual transport we use.

Integration feasibility. Low as a dependency. Last release 2014-10-17, archived, PHP 5.x-era syntax, no service provider, no composer.json constraints aligned with Laravel 8–11, and a test suite built against PHPUnit 4. It will not install cleanly on a current PHP 8 runtime without patching, and patching an archived package is indistinguishable from forking it. Four stars and zero dependents also mean no community has exercised it against modern TLS stacks, redirects, or proxy configurations.

Technical risk. Concentrated in payments, which is the worst place for it: unknown defaults for TLS verification, no structured timeout/retry semantics, no error taxonomy to distinguish a decline from a network failure, and no idempotency primitive — the single highest-severity gap for a payment client, since a naive retry on timeout can double-charge. Supply-chain risk is genuinely near zero (tiny, no dependencies), but "abandoned" is a governance finding regardless of size: no CVE process, no maintainer, no security patching.

Key questions. Which gateways must we call, and do any require idempotency keys, signed payloads, or mutual TLS? Do we need PSR-18 interop for shared middleware (logging, tracing, circuit breaking)? Who owns payment transport internally after adoption? Is there a house standard already — Laravel's Http facade or Guzzle — that this would fragment? What is our appetite for owning a fork versus rebuilding ~200 lines?

Integration Approach

Stack fit. The pattern fits; the artifact does not. Laravel's HTTP client already delivers everything this package promised in 2014 — a testable abstraction (Http::fake()), middleware, retries with backoff, and Guzzle underneath — plus PSR-18 compatibility if we need it. Using the legacy package would introduce a second HTTP abstraction alongside the framework's, which is a net negative for onboarding and code review.

Migration path. Treat the repository as a reference design, not a runtime component. If any legacy code already depends on it (unlikely given zero dependents, but possible in an inherited payment module), wrap it behind a first-party PaymentHttpClient interface, then replace the implementation with a PSR-18 adapter or a Laravel Http-backed adapter. Callers keep the contract; the transport swaps underneath.

Compatibility. Assume it does not run on PHP 8.x. Budget for a compatibility audit even to evaluate it in a sandbox, and treat any fork as new code subject to full review, static analysis, and test coverage rather than as a trusted dependency.

Sequencing.

  1. Define a first-party PaymentHttpClient contract shaped by our needs (timeouts, idempotency key propagation, structured error types), not by a 2014 proposal.
  2. Implement one adapter over Laravel Http/Guzzle; keep PSR-18 as an escape hatch if we later need framework independence.
  3. Build fakes and a gateway sandbox harness so payment tests never hit the network.
  4. Add per-gateway adapters (auth, signing, response mapping) on top of the transport, not inside it.
  5. Enforce a lint rule or architecture test banning raw curl/Guzzle in payment namespaces.
  6. Document the decision to not adopt payment/httpclient, with rationale, so the question is not relitigated.

Operational Impact

Maintenance. Upstream maintenance is zero — the repository is archived. Any adoption is a fork on day one, and we inherit security patching for code that sits directly on the money path. The codebase is small, so the effort is bounded, but the accountability is permanent.

Support. No issue triage, no release cadence, no CVE channel, no documentation beyond a README. Incident response for a payment transport failure would rest entirely on internal engineers reading unfamiliar 2014 code at the worst possible moment.

Scaling. Synchronous and blocking, with no concurrency primitives beyond whatever curl handle reuse the transport allows. Throughput is capped by PHP-FPM/queue worker count and by gateway latency; there is no built-in connection pooling strategy, backoff, or circuit breaking. At volume, timeouts and retries must be designed by us, and they must be designed before launch, not after.

Failure modes. The dangerous ones are silent: an ambiguous timeout with no idempotency key becomes a duplicate charge; a missing error taxonomy collapses "card declined" and "gateway unreachable" into one exception, breaking reconciliation and support tooling; TLS/verification defaults are unverified and unowned. These are not exotic edge cases — they are normal operating conditions for a payment integration.

Ramp-up. Individually trivial — the API surface is a few methods — but the knowledge is non-transferable. New engineers cannot search for it, find examples, or lean on community answers. The real onboarding cost sits in gateway semantics (auth, signing, settlement, refunds), which this package does nothing to solve. Given the 0.055 score against an 8.7 opportunity score, the honest read is that the opportunity is to rebuild this abstraction properly on current standards, and the package itself is best retired as a design reference.

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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource