abraham-flutterwave/laravel-payment

Flutterwave的官方Laravel包。

安装: 1,564

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 1

分支: 1

开放问题: 1

类型:laravel-library

1.0.3 2024-03-20 02:12 UTC

This package is auto-updated.

Last update: 2024-08-31 00:41:40 UTC


README

Flutterwave Laravel.

Packagist Downloads Packagist PHP Version Support GitHub stars Packagist License

此Flutterwave Laravel包提供了从Laravel应用程序轻松访问Flutterwave for Business (F4B) v3 API的途径。它抽象了直接集成中涉及到的复杂性,并允许您快速调用API。

提供的功能包括

  • 集合:卡、账户、移动货币、银行转账、USSD、易货、NQR。

目录

  1. 需求
  2. 安装
  3. 初始化
  4. 使用
  5. 测试
  6. 调试错误
  7. 支持
  8. 贡献指南
  9. 许可证
  10. 变更日志

需求

  1. Flutterwave for business API密钥
  2. 接受的PHP版本:>= 7.3

安装

将供应商文件夹提交到项目中,以允许那些未安装composer的用户轻松安装。建议使用以下命令更新项目依赖项:

$ composer require abraham-flutterwave/laravel-payment

请确保通过运行以下命令发布您的配置文件

$ php artisan vendor:publish --provider="Flutterwave\Payments\Providers\FlutterwaveServiceProvider"  

初始化

在您的.env文件中添加以下环境变量

PUBLIC_KEY="****YOUR**PUBLIC**KEY****" // can be gotten from the dashboard
SECRET_KEY="****YOUR**SECRET**KEY****" // can be gotten from the dashboard
ENCRYPTION_KEY="Encryption key"
ENV="staging/production"

如徽标、名称、支付方式等业务设置/首选项可以在配置文件config/flutterwave.php中设置

'businessName' => env('BUSINESS_NAME', 'Flutterwave Store'),
'transactionPrefix' => env('TRANSACTION_PREFIX', 'LARAVEL-'),
'logo' => env('BUSINESS_LOGO', 'https://res.cloudinary.com/decagon/image/upload/v1593642339/decagon-logo.png'),
'title' => env('TITLE', 'Flutterwave Store'),
'description' => env('DESCRIPTION', 'Flutterwave Store Description'),
'country' => env('COUNTRY', 'NG'),
'currency' => env('CURRENCY', Currency::NGN),
'paymentType' => [
    'card', 'account', 'banktransfer', 'mpesa', 'mobilemoneyrwanda', 'mobilemoneyzambia',
    'mobilemoneyuganda', 'ussd', 'qr', 'mobilemoneyghana', 'credit', 'barter',
    'payattitude', 'mobilemoneyfranco', 'mobilemoneytanzania', 'paga', '1voucher',
],

使用

渲染支付模态

有两种类型的模态可以渲染,内联模态和标准模态。内联模态在您的网站上渲染,而标准模态在Flutterwave托管页面上渲染。

内联模态

use Flutterwave\Payments\Facades\Flutterwave;
use Flutterwave\Payments\Data\Currency;

$payload = [
    "tx_ref" => Flutterwave::generateTransactionReference(),
    "amount" => 100,
    "currency" => Currency::NGN,
    "customer" => [
        "email" => "developers@flutterwavego.com"
    ],
];

$payment_details = Flutterwave::render('inline', $payload);

return view('flutterwave::modal', compact('payment_details'));

标准模态

use Flutterwave\Payments\Facades\Flutterwave;
use Flutterwave\Payments\Data\Currency;

$payload = [
    "tx_ref" => Flutterwave::generateTransactionReference(),
    "amount" => 100,
    "currency" => Currency::NGN,
    "customer" => [
        "email" => "developers@flutterwavego.com"
    ],
];

$payment_link = Flutterwave::render('standard', $payload);

return redirect($payment_link);

日志记录

要启用日志记录,只需将以下内容添加到您的配置文件config/logging.php

'flutterwave' => [
    'driver' => 'single',
    'path' => storage_path('logs/flutterwave.log'),
    'level' => 'debug',
],

Webhook设置

创建一个Webhook URL以接收支付事件通知。以下是使用新包的Webhook URL实现示例。

use Flutterwave\Payments\Facades\Flutterwave;
use Flutterwave\Payments\Data\Status;

Route::post('flutterwave/payment/webhook', function () {
    $method = request()->method();
    if ($method === 'POST') {
        //get the request body
        $body = request()->getContent();
        $webhook = Flutterwave::use('webhooks');
        $transaction = Flutterwave::use('transactions');
        //get the request signature
        $signature = request()->header($webhook::SECURE_HEADER);

        //verify the signature
        $isVerified = $webhook->verifySignature($body, $signature);

        if ($isVerified) {
            [ 'tx_ref' => $tx_ref, 'id' => $id ] = $webhook->getHook();
            [ 'status' => $status, 'data' => $transactionData ] = $transaction->verifyTransactionReference($tx_ref);

            $responseData = ['tx_ref' => $tx_ref, 'id' => $id];
            if ($status === 'success') {
                switch ($transactionData['status']) {
                    case Status::SUCCESSFUL:
                        // do something
                        //save to database
                        //send email
                        break;
                    case Status::PENDING:
                        // do something
                        //save to database
                        //send email
                        break;
                    case Status::FAILED:
                        // do something
                        //save to database
                        //send email
                        break;
                }
            }

            return response()->json(['status' => 'success', 'message' => 'Webhook verified by Flutterwave Laravel Package', 'data' => $responseData]);
        }

        return response()->json(['status' => 'error', 'message' => 'Access denied. Hash invalid'])->setStatusCode(401);
    }

    // return 404
    return abort(404);
})->name('flutterwave.webhook');

测试

SDK的所有测试都是使用PHP的phpunit模块编写的。当前的测试包括:模态Webhook交易

可以像这样运行它们

phpunit

注意:如果创建子账户的测试失败,只需将account_numberaccount_bankbusinesss_email更改为其它的值即可。

注意:测试可能会因账户验证失败而失败 - 待OTP验证,这取决于服务是否中断。


调试错误

我们理解在集成我们的库时可能会遇到一些错误。您可以在这里了解更多关于我们的错误信息。

对于授权验证错误响应,请仔细检查您的API密钥和请求。如果您收到服务器错误,请与支持团队联系。

支持

如果您需要使用此库的额外帮助,请联系开发经验(DX)团队,通过电子邮件slack

您也可以关注我们的@FlutterwaveEng并告诉我们您的想法 😊。

贡献指南

有关我们社区贡献指南的更多信息,请在这里查看。

许可证

通过向此库贡献力量,您同意您的贡献将根据其MIT许可证进行许可。

版权(c)Flutterwave Inc。

Flutterwave API参考

待办事项

  1. 添加其他Flutterwave服务 - 卡、转账、子账户、支付子账户、计划和小额支付
  2. 控制台命令 - Webhooks、发起付款和退款。