Weave Code
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

Laravel Multipayment Gateways Laravel Package

musahmusah/laravel-multipayment-gateways

View on GitHub
Deep Wiki
Context7
2.0.0-beta.1

This is a beta release. Stable release is scheduled for March 17, 2026. Install via: composer require musahmusah/laravel-multipayment-gateways:^2.0@beta

Breaking Changes

  • Dropped support for PHP 8.0 and 8.1 — PHP 8.2+ is now required
  • Dropped support for Laravel 8, 9, and 10 — Laravel 11, 12, and 13 are now supported
  • Removed ConsumesExternalServices trait; HTTP layer is now handled internally via Laravel HTTP Client
  • FlutterwaveConstant class removed — replaced by the FlutterwaveChargeType enum
  • HttpMethodFoundException removed — consolidated into HttpClientException

New Features

  • PaymentResponse DTO — all gateway responses are now returned as a typed PaymentResponse data object instead of raw arrays, giving you consistent, predictable response structures across all gateways
  • PaymentManager — new unified entry point to resolve any gateway at runtime via Payment::gateway('paystack') or the Payment facade
  • Runtime config overrides — gateway credentials can now be overridden at runtime without touching config files, useful for multi-tenant applications
  • PaymentGateway enum — type-safe enum for referencing supported gateways (PaymentGateway::Paystack, PaymentGateway::Flutterwave, etc.)
  • Kuda facade — new Kuda facade added alongside the existing gateway facades
  • Split contractsFlutterwaveContract and PaystackContract are now broken into focused sub-contracts (e.g. FlutterwaveChargeContract, PaystackTransactionContract) for better IDE support and extensibility

Improvements

  • Replaced Guzzle with Laravel HTTP Client — removed the guzzlehttp/guzzle dependency; the package now uses Laravel's built-in HTTP Client, reducing dependencies and improving testability
  • Strict types enforceddeclare(strict_types=1) added across the entire codebase for stronger type safety
  • Enums over constants — PHP 8.1+ native enums replace all string/integer constant classes
  • Improved HttpClientException — richer exception context with better error messages from gateway responses
  • Expanded test coverage — tests rewritten to use Http::fake() throughout; new integration tests added for Flutterwave, Paystack, and Stripe

Full Changelog: https://github.com/MusahMusah/laravel-multipayment-gateways/compare/1.8.0...2.0.0-beta.1

1.7.1

What's Changed

  • Fix Bug when using stripe Payment Gateway Invalid request (check that your POST content type is application/x-www-form-urlencoded)

Full Changelog: https://github.com/MusahMusah/laravel-multipayment-gateways/compare/1.7.0...1.7.1

1.7.0

What's Changed

  • Added Support for Laravel ^11
1.6.7

What's Changed

  • Fixed issue with paystack's response typed when redirecting user to the specified callback_url by @MusahMusah
  • Fixed code styling
1.6.6

What's Changed

  • Fixed issue with paystack's redirectToCheckout when carrying out transaction method by @MusahMusah
  • Fixed code styling
1.6.5

What's Changed

  • Fixed issues with static analysis failing by @MusahMusah
  • Added automated tests for flutterwave service endpoints by @cybernerdie in #10

New Contributor

  • @Adams-Ijachi made their first contribution to the package in #9 which added better coverage to the httpClient Wrapper
1.6.3

What's Changed

  • Updated documentation on how to use the newly added HttpClientWrapper with any of the Payment Gateways.
  • Added all httpClient methods to individual Payment Gateways Service, this will help IDEs better understand the underlying method signature and structure.
1.6.0

What's Changed

  • Added flutterwave gateway helper to ease usage of all the functionalities available in the flutterwave class.
 flutterwave->anymethod();











  • Optimized codebase with significant refactor

Significant Improvement

Added a HttpClientWrapper to enable making http get, post, put, patch and delete request using dependencies of the desired payment gateways in making such request. All requests made through the HttpClientWrapper will have access to desired gateway base url, secret key among other dependencies. This change would allow extending the package beyond methods available in a specific gateway class, simply by calling any endpoint from your desired payment gateway api docs with parameters required to make the request should do. In addition, the HttpClientWrapper is available via helpers, dependency injection and the facade of all payment gateways supported.

Usage
   // Example of making http get request
   paystack()->httpClient()->get('bank');

   // Example of making http post request
   $fields = [
    "email" => "customer@email.com",
     "first_name" => "Zero",
     "last_name" => "Sum",
    "phone" => "+2348123456789"
   ];
   paystack()->httpClient()->post('customer', $fields);

 // all payment gateways provided by the package can use the httpClient
 Flutterwave::httpClient()->get('/banks/056');
 stripe()->httpClient()->get('v1/customers/cus_4QFOF3xrvBT2nU');











1.2.5

What's Changed

  • New documentation page added by @cybernerdie
  • Add custom webhook signature validation by @MusahMusah
  • Additional transaction methods for Paystack Gateway
1.2.0

What's Changed

1.1.0

What's Changed

  • Add Laravel 8 and 10 Support by @MusahMusah in #5
  • Add BaseGateway Abstract class to encapsulate commonalities among payment gateways
Payment

Payment Gateways Added

  • Paystack
  • Stripe
  • This release incorporates implementations of various endpoints for payment using paystack or stripe

Webhooks Integration

The package provides two ways in handling webhooks.

  • Job
  • Event
  • By default webhook request will be handled using default package event handler, However, when passed an event class in the config the class will be used. This behaviour is the same when using job as webhook handler.
Laravel

What's Changed

Full Changelog: https://github.com/MusahMusah/laravel-multipayment-gateways/compare/1.7.2...1.8.0

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.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope