tomatophp / filament-payments
在 FilamentPHP 应用内管理您的支付,支持多支付网关集成
v1.0.12
2024-09-19 18:30 UTC
Requires
- php: ^8.1
- cryptomus/api-php-sdk: ^1.0
- filament/filament: ^3.0
- filament/spatie-laravel-media-library-plugin: ^3.0
- myfatoorah/library: ^2.2
- paypal/paypal-checkout-sdk: ^1.0
- plisio/plisio-sdk-laravel: ^1.0
- stripe/stripe-php: ^15.4
- tomatophp/console-helpers: ^1.0
README
Filament 支付管理器
在 FilamentPHP 应用内管理您的支付,支持多支付网关集成
截图
功能
- 支付列表
- 支付查看
- 按状态过滤和分组支付
- 支付网关
- 支付网关选项
- 支付操作
- 支付外观方法
- 支付页面
- 支付驱动程序
- Stripe3 集成
- Plisio 集成
- Paypal 集成
- Paymob 集成
- Tap 集成
- Myfatoorah 集成
- Paddle 集成
- Lemon Squeezy 集成
- Binance 集成
- Creptomus 集成
- PayTabs 集成
- Moyaser 集成
- Payfort 集成
- Fawery 集成
安装
composer require tomatophp/filament-payments
我们需要安装并迁移 Media Library 插件,可以使用此命令发布迁移
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"
安装您的包后,请运行此命令
php artisan filament-payments:install
最后,在 /app/Providers/Filament/AdminPanelProvider.php
中注册插件
->plugin(\TomatoPHP\FilamentPayments\FilamentPaymentsPlugin::make())
使用方法
您可以使用 Facade FilamentPayments
以非常简单的方式使用支付,如下所示
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' ) )), );
如果您想将其作为 JSON 返回,只需将 json: true
,此方法将返回一个包含支付的 URL,您可以与任何人共享此链接以完成支付。
使用支付操作
您可以使用表格操作来轻松地将支付与您的表格链接,如下所示
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(), ]); }
与 Filament 订阅集成
如果您想使用此包与 Filament 订阅 一起使用,可以使用此代码
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') ) )); }); }
在钩子被调用后,将重定向到支付。
发布资产
您可以使用此命令发布配置文件
php artisan vendor:publish --tag="filament-payments-config"
您可以使用此命令发布视图文件
php artisan vendor:publish --tag="filament-payments-views"
您可以使用此命令发布语言文件
php artisan vendor:publish --tag="filament-payments-lang"
您可以使用此命令发布迁移文件
php artisan vendor:publish --tag="filament-payments-migrations"
其他 Filament 包
查看我们的 Awesome TomatoPHP