stephenjude/laravel-payment-gateways

一个简单的Laravel API实现,适用于所有支付服务提供商,如Paystack、Flutterwave、Paypal等。

3.0.5 2024-07-08 10:02 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这是一个适用于所有支付服务提供商的简单Laravel实现。此包支持Paystack、Monnify、Pay4Me Pay、Seerbit Flutterwave、Klasha和Stripe。

用例

你是否需要在移动应用程序中实现有限的SDK来接受支付?这正是这个包解决的问题。

使用这个包,你可以生成一个支付链接,并将其返回到移动应用程序API调用,支付可以在应用内浏览器中完成。

当客户完成支付时,这个包会验证支付并执行你在自定义闭包中定义的代码。

闭包应该看起来像这样

use Stephenjude\PaymentGateway\DataObjects\TransactionData;

function (TransactionData $payment){
    $order->update([
        'status' => $payment->status, 
        'amount' => $payment->amount, 
        'currency' => $payment->currency
    ]);
    
    $customer->notify(new OrderPaymentNotification($order));
}

如果你在Web上使用这个包,这个闭包是你在更新客户订单或发送通知后返回重定向的地方。

安装

您可以通过Composer安装此包

composer require stephenjude/laravel-payment-gateways

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="payment-gateways-config"

可选地,您可以使用以下命令发布视图

php artisan vendor:publish --tag="payment-gateways-views"

用法

此包目前支持 paystackmonnifypay4meseerbitflutterwaveklashastripe

如何初始化支付会话

use Stephenjude\PaymentGateway\PaymentGateway;
use Stephenjude\PaymentGateway\DataObjects\TransactionData;

$provider = PaymentGateway::make('paystack')

$paymentSession = $provider->initializeCheckout([
    'currency' => 'NGN', // required
    'amount' => 100, // required
    'email' => 'customer@email.com', // required
    'meta' => [ 'name' => 'Stephen Jude', 'phone' => '081xxxxxxxxx'],
    'closure' => function (TransactionData $payment){
        /* 
         * Payment verification happens immediately after the customer makes payment. 
         * The payment data obtained from the verification will be injected into this closure.
         */
        logger('payment details', [
           'currency' => $payment->currency, 
           'amount' => $payment->amount, 
           'status' => $payment->status,
           'reference' => $payment->reference,   
           'provider' => $payment->provider,   
           'date' => $payment->date,                   
        ]);
    },
]);

$paymentSession->provider;
$paymentSession->checkoutUrl;
$paymentSession->expires;

访问支付事务数据

$provider = PaymentGateway::make('paystack'); 

$transactions = $provider->listTransactions(); // Returns array

$transaction = $provider->findTransaction(REFERENCE); // Returns Stephenjude\PaymentGateway\DataObjects\TransactionData 
$transaction->provider;
$transaction->email;
$transaction->amount;
$transaction->currency;
$transaction->reference;
$transaction->status;
$transaction->date;

Pawapay 设置

必需的环境变量

PAWAPAY_SECRET=

结账

use \Stephenjude\PaymentGateway\Enums\Provider;
use \Stephenjude\PaymentGateway\PaymentGateway;

$pawapay = PaymentGateway::make(Provider::PAWAPAY())->initializeCheckout([
    "amount" => 15,
    "country" => "ZMB",
    'meta' => [
        "description" => "Note of 4 to 22 chars",
        "reason" => "Ticket to festival"
    ]
]);

Pay4Me 设置

PAY4ME_PUBLIC=
PAY4ME_SECRET=

Monnify 设置

MONNIFY_PUBLIC=
MONNIFY_SECRET=
MONNIFY_CONTRACT_CODE=

Pay4Me 设置

SEERBIT_PUBLIC=
SEERBIT_SECRET=

Paystack 设置

PAYSTACK_PUBLIC=
PAYSTACK_SECRET=

Flutterwave 设置

FLUTTERWAVE_PUBLIC=
FLUTTERWAVE_SECRET=

Klasha 设置

KLASHA_PUBLIC=
KLASHA_SECRET=

Stripe 设置

STRIPE_PUBLIC=
STRIPE_SECRET=

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅 许可文件