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

Product Decisions This Supports

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.

When to Consider This Package

Consider only in these narrow cases:

  • You are already on it. An existing payment integration imports 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.
  • As a reading reference, not a dependency. Reviewing the interface design while drafting your own internal payment-client contract is legitimate. Copy the shape, not the code.
  • Historical/compliance archaeology. If you need to explain why a legacy integration looks the way it does, or you are documenting why a 2014 interface choice is now a liability.

Look elsewhere — decisively — when:

  • You are starting new work. Do not introduce an archived, spec-abandoned interface into a new Laravel service. Use guzzlehttp/guzzle ^7 or symfony/http-client, typed against Psr\Http\Client\ClientInterface.
  • You need a working client. This package does not ship one. Adopting it means writing and maintaining the transport yourself — a cost with no offsetting benefit over the maintained alternatives.
  • You need Laravel integration. There is no service provider, no facade, no config publishing, no Laravel-version support matrix. The "works in Laravel" claim means "it is plain PHP and therefore not framework-hostile," which is different from being integrated. laravel/framework's own Http facade or a small PSR-18 binding gives you more for less.
  • You care about ecosystem interop. Every modern package that accepts an injected HTTP client accepts ClientInterface. Nothing accepts this interface. Interop is the whole point of a shared client abstraction, and that value is zero here.
  • Security or compliance review is in scope. An archived package with no release in over a decade will not receive fixes for TLS, redirect, or header-handling issues. If your payment path handles PAN data or is in PCI scope, an unmaintained transport seam is a finding, not a convenience.
  • You are weighing the "minimal dependencies" pitch. Guzzle and Symfony HttpClient are not heavy relative to the cost of owning a bespoke transport, and both give you retries, timeouts, connection pooling, and middleware — the things payment calls actually need in production.

How to Pitch It (Stakeholders)

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.

  • What it is: an interface definition plus a pluggable transport hook. Not a client. You bring the implementation.
  • Why it fails today: it targets a proposed PHP-FIG interface that was superseded by PSR-7, then PSR-18/PSR-17. It predates PHP 7 type declarations. Last release 2014-10-17; repository archived; zero dependents; four stars. No Laravel provider, no support matrix, no security response process.
  • What we keep: the design instinct. A narrow, transport-agnostic, mockable interface for gateway calls is the right pattern and we should implement it — against Psr\Http\Client\ClientInterface, with Psr\Http\Message request/response objects, injected via the container.
  • What that buys us: swappable transports for CI (no sandbox calls), middleware for retries/timeouts/logging on the payment path, framework-agnostic code that is still trivially bindable in Laravel, and a standing upgrade path because the standard is maintained by the FIG and implemented by every vendor we might switch to.
  • Cost and risk of the recommendation: one composer dependency and an afternoon of wiring. Effectively zero migration risk for new code. For any existing usage of this package, wrap-then-replace: introduce the PSR-18 client behind an adapter that matches current call signatures, verify parity in staging against the payment gateway sandbox, then delete the old dependency.
  • The one thing to watch: do not let a "build our own HTTP client" conversation start from this package's example. The abstraction is worth owning; the transport is not.

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.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core