tomatophp / filament-payments

在 FilamentPHP 应用内管理您的支付,支持多支付网关集成

v1.0.12 2024-09-19 18:30 UTC

This package is auto-updated.

Last update: 2024-09-19 18:32:03 UTC


README

Screenshot

Filament 支付管理器

Latest Stable Version License Downloads

在 FilamentPHP 应用内管理您的支付,支持多支付网关集成

截图

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

功能

  • 支付列表
  • 支付查看
  • 按状态过滤和分组支付
  • 支付网关
  • 支付网关选项
  • 支付操作
  • 支付外观方法
  • 支付页面
  • 支付驱动程序
  • 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