Plugins
Payment Manager
Manage your payments inside FilamentPHP app with multi payment gateway integration
Developer Tool
Dark theme support
Yes
Multi language support
Yes
Not compatible with v5
Supported versions: 3.x
Documentation

Screenshot

Latest Stable Version License Downloads

Manage your payments inside FilamentPHP app with multi payment gateway integration

#Screenshots

Payment Page Payments View Payment Payment Gates Edit Gate Gate Option Payment Action Payment Action Confirm

#Features

  • [x] Payments List
  • [x] Payment View
  • [x] Payment Filter And Groups by Status
  • [x] Payment Gates
  • [x] Payment Gate Options
  • [x] Payment Action
  • [x] Payment Facade Method
  • [x] Payment Page
  • [x] Payment Drivers
  • [x] StripeV3 Integration
  • [x] Plisio Integration
  • [x] Paypal Integration
  • [x] Paymob Integration
  • [x] Tap Integration
  • [x] Myfatoorah Integration
  • [x] Creptomus Integration
  • [ ] Paddle Integration
  • [ ] Lemon Squeezy Integration
  • [ ] Binance Integration
  • [ ] PayTabs Integration
  • [ ] Moyaser Integration
  • [ ] Payfort Integration
  • [ ] Fawery Integration

#Installation

composer require tomatophp/filament-payments

we need the Media Library plugin to be installed and migrated you can use this command to publish the migration

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"

after install your package please run this command

php artisan filament-payments:install

finally register the plugin on /app/Providers/Filament/AdminPanelProvider.php

->plugin(\TomatoPHP\FilamentPayments\FilamentPaymentsPlugin::make())

#Using

you can use payment with the very easy way just use Facade FilamentPayments like this

use TomatoPHP\FilamentPayments\Facades\FilamentPayments;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentBillingInfo;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentCustomer;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentRequest;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentShippingInfo;
use TomatoPHP\FilamentSubscriptions\Facades\FilamentSubscriptions;
 
return redirect()->to(
FilamentPayments::pay(
data: PaymentRequest::make(Plan::class)
->model_id($data['new']->id)
->currency('USD')
->amount($data['new']->price)
->details('Subscription Payment')
->success_url(url('/success'))
->cancel_url(url('/cancel'))
->customer(
PaymentCustomer::make('John Doe')
->email('john@gmail.com')
->mobile('+201207860084')
)
->billing_info(
PaymentBillingInfo::make('123 Main St')
->area('Downtown')
->city('Cairo')
->state('Cairo')
->postcode('12345')
->country('EG')
)
->shipping_info(
PaymentShippingInfo::make('123 Main St')
->area('Downtown')
->city('Cairo')
->state('Cairo')
->postcode('12345')
->country('EG'
)
)),
);

if you want to return it as json you can just make json: true, this method return a URL for you with the payment, you can share this link with anyone to make the payment done.

#Use Payment Action

you can use a Table Action to make it easy to link Payment with your table like this

use TomatoPHP\FilamentPayments\Filament\Actions\PaymentAction;
 
public function table(Table $table): $table
{
return $table
->actions([
PaymentAction::make('payment')
->request(function ($record){
return PaymentRequest::make(Order::class)
->model_id($record->id)
->currency('USD')
->amount($record->total)
->details($record->ordersItems()->pluck('product_id')->implode(', '))
->success_url(url('/success'))
->cancel_url(url('/cancel'))
->customer(
PaymentCustomer::make($record->name)
->email($record->account->email)
->mobile($record->phone)
)
->billing_info(
PaymentBillingInfo::make($record->address)
->area($record->area->name)
->city($record->city->name)
->state($record->city->name)
->postcode('12345')
->country($record->country->iso3)
)
->shipping_info(
PaymentShippingInfo::make($record->address)
->area($record->area->name)
->city($record->city->name)
->state($record->city->name)
->postcode('12345')
->country($record->country->iso3)
);
})
->pay(),
]);
}

#Integrate With Filament Subscription

if you like to use this package with Filament Subscription you can use this code

use TomatoPHP\FilamentPayments\Facades\FilamentPayments;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentBillingInfo;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentCustomer;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentRequest;
use TomatoPHP\FilamentPayments\Services\Contracts\PaymentShippingInfo;
use TomatoPHP\FilamentSubscriptions\Facades\FilamentSubscriptions;
 
public function boot(): void
{
FilamentSubscriptions::afterSubscription(function ($data) {
//Payment Here
return redirect()->to(FilamentPayments::pay(
data: PaymentRequest::make(Plan::class)
->model_id($data['new']->id)
->currency('USD')
->amount($data['new']->price)
->details('Subscription Payment')
->success_url(url('/success'))
->cancel_url(url('/cancel'))
->customer(
PaymentCustomer::make('John Doe')
->email('john@gmail.com')
->mobile('+201207860084')
)
->billing_info(
PaymentBillingInfo::make('123 Main St')
->area('Downtown')
->city('Cairo')
->state('Cairo')
->postcode('12345')
->country('EG')
)
->shipping_info(
PaymentShippingInfo::make('123 Main St')
->area('Downtown')
->city('Cairo')
->state('Cairo')
->postcode('12345')
->country('EG')
)
));
});
}

it will redirect you to payment after the hook is called.

#Publish Assets

you can publish config file by use this command

php artisan vendor:publish --tag="filament-payments-config"

you can publish views file by use this command

php artisan vendor:publish --tag="filament-payments-views"

you can publish languages file by use this command

php artisan vendor:publish --tag="filament-payments-lang"

you can publish migrations file by use this command

php artisan vendor:publish --tag="filament-payments-migrations"

#Other Filament Packages

Checkout our Awesome TomatoPHP

Featured Plugins