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.
Build vs. buy for the payment integration layer. The package is an interface, not an implementation — it defines a small contract (request/response around an outbound call) and requires you to supply the transport. Evaluating it forces the team to answer the right question: are we standardizing on an interface we control, or on a maintained ecosystem standard? That is a decision worth making explicitly, and the answer here is neither "adopt this" nor "build our own interface."
Gateway abstraction / anti-corruption layer roadmap. If the roadmap item is "stop scattering curl and Guzzle calls through payment controllers; introduce a single seam for gateway calls," this package is a concrete illustration of the shape of that seam — a minimal, mockable wrapper with no framework coupling. It is useful as a design reference for the interface surface (tiny, transport-agnostic, trivially fakeable in tests), even if the artifact itself is not adoptable.
Standard selection for outbound HTTP. The package implements an early PHP-FIG proposed HTTP client interface that was never ratified and was superseded by PSR-7 (2015) and later PSR-18 + PSR-17 (2018), with HTTPlug bridging the interim. Any decision about a house HTTP abstraction is really a decision about ecosystem compatibility. The correct output of this evaluation is a standard: PSR-18 client + PSR-17 factories, with Guzzle 7 or Symfony HttpClient as the concrete transport.
Testability and mocking strategy for payment flows. "Pluggable transport for mocking in tests" is the genuinely valuable idea here, and it should survive into whatever we adopt. Payment integrations are the worst place for live sandbox calls in CI; a swappable transport is the enabling mechanism. PSR-18 delivers the same property, and every mature mocking library (e.g. php-http/mock-client, Guzzle's MockHandler) already targets it.
Maintenance/risk triage for existing inventory. If this package appears in a dependency audit, this assessment supplies the disposition: archived upstream, last tagged release 2014-10-17, no dependents, and pinned to a withdrawn specification. That is a low-effort, low-risk removal item rather than a migration project.
Caveat on the scoring signal. The composite score of 0.055 and the "opportunity: 8.7" figure should not be read as an adoption recommendation. A high opportunity score on an unmaintained, zero-dependent package is a gap-analysis artifact — it says "no modern package occupies this exact niche," not "this is worth using." Stars (4) and dependents (0) are the more honest adoption signals, and both are near-floor.
Consider only in these narrow cases:
payment/httpclient types. In that case, treat it as frozen: do not upgrade it, do not extend it, and schedule a replacement with a PSR-18 client behind an adapter so call sites stay unchanged. Verify first that it works on your current PHP runtime — a 2014 interface package predates PHP 7 type declarations entirely and may carry PHP 5-era assumptions.Look elsewhere — decisively — when:
guzzlehttp/guzzle ^7 or symfony/http-client, typed against Psr\Http\Client\ClientInterface.laravel/framework's own Http facade or a small PSR-18 binding gives you more for less.ClientInterface. Nothing accepts this interface. Interop is the whole point of a shared client abstraction, and that value is zero here.Recommendation: do not adopt. Standardize on PSR-18 with a maintained transport (Guzzle 7 or Symfony HttpClient), bound behind a thin internal payment-client interface.
For executives — one paragraph. We evaluated a candidate HTTP client abstraction for our payment integrations. It is archived upstream, has had no release since October 2014, has no downstream dependents, and implements a PHP-FIG specification that was withdrawn before it was ever ratified — the ecosystem moved to PSR-7 and then PSR-18, and every relevant library now targets those. The package's stated goal, a small testable seam around outbound payment calls, is a good goal; this is not the vehicle for it. Adopting it would mean writing and owning the transport layer ourselves, with no ecosystem support and no security maintenance, in the part of the system where reliability matters most. The recommended alternative is a commodity dependency we do not have to maintain, and it costs us nothing in flexibility because we still control the interface our payment code talks to.
For engineering — the substance.
Psr\Http\Client\ClientInterface, with Psr\Http\Message request/response objects, injected via the container.Bottom line. The idea is sound and already available in a maintained, standardized form. Treat this package as a design reference and a cleanup item, not a dependency.
How can I help you explore Laravel packages today?