abraham-flutterwave / laravel-payment
Flutterwave的官方Laravel包。
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- illuminate/support: ^7.0|^v8.83|^9.39|^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.2
- nunomaduro/phpinsights: ^2.6
- orchestra/testbench: ^7.11
- pestphp/pest: ^1.22
This package is auto-updated.
Last update: 2024-08-31 00:41:40 UTC
README
Flutterwave Laravel.
此Flutterwave Laravel包提供了从Laravel应用程序轻松访问Flutterwave for Business (F4B) v3 API的途径。它抽象了直接集成中涉及到的复杂性,并允许您快速调用API。
提供的功能包括
- 集合:卡、账户、移动货币、银行转账、USSD、易货、NQR。
目录
需求
- Flutterwave for business API密钥
- 接受的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_number
、account_bank
和businesss_email
更改为其它的值即可。
注意:测试可能会因账户验证失败而失败 -
待OTP验证
,这取决于服务是否中断。
调试错误
我们理解在集成我们的库时可能会遇到一些错误。您可以在这里了解更多关于我们的错误信息。
对于授权
和验证
错误响应,请仔细检查您的API密钥和请求。如果您收到服务器
错误,请与支持团队联系。
支持
如果您需要使用此库的额外帮助,请联系开发经验(DX)团队,通过电子邮件或slack。
您也可以关注我们的@FlutterwaveEng并告诉我们您的想法 😊。
贡献指南
有关我们社区贡献指南的更多信息,请在这里查看。
许可证
通过向此库贡献力量,您同意您的贡献将根据其MIT许可证进行许可。
版权(c)Flutterwave Inc。
Flutterwave API参考
待办事项
- 添加其他Flutterwave服务 - 卡、转账、子账户、支付子账户、计划和小额支付
- 控制台命令 - Webhooks、发起付款和退款。