This Flutterwave v3 PHP Library provides easy access to Flutterwave for Business (F4B) v3 APIs from php apps. It abstracts the complexity involved in direct integration and allows you to make quick calls to the APIs.
Available features include:
To install the package via Composer, run the following command.
composer require flutterwavedev/flutterwave-v3
Create a .env file and follow the format of the .env.example
file
Save your PUBLIC_KEY, SECRET_KEY, ENV in the .env
file
cp .env.example .env
Your .env
file should look this.
PUBLIC_KEY=FLWSECK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X
SECRET_KEY=FLWPUBK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X
ENCRYPTION_KEY=FLWSECK_XXXXXXXXXXXXXXXX
ENV='staging/production'
The SDK provides two easy methods of making collections via the famous payment modal. Learn more
Edit the paymentForm.php
and processPayment.php
files to suit your purpose. Both files are well documented.
Simply redirect to the paymentForm.php
file on your browser to process a payment.
In this implementation, we are expecting a form encoded POST request to this script. The request will contain the following parameters.
{
"amount": "The amount required to be charged. (*)",
"currency": "The currency to charge in. (*)",
"first_name": "The first name of the customer. (*)",
"last_name" : "The last name of the customer. (*)",
"email": "The customers email address. (*)",
"phone_number": "The customer's phone number. (Optional).",
"success_url": "The url to redirect customer to after successful payment.",
"failure_url": "The url to redirect customer to after a failed payment.",
"tx_ref":"The unique transaction identifier. if ommited the apiclient would generate one"
}
The script in paymentProcess.php
handles the request data via the PaymentController
. If you are using a Framework like Laravel or CodeIgniter you might want to take a look at the PaymentController
<?php
declare(strict_types=1);
# if vendor file is not present, notify developer to run composer install.
require __DIR__.'/vendor/autoload.php';
use Flutterwave\Controller\PaymentController;
use Flutterwave\EventHandlers\ModalEventHandler as PaymentHandler;
use Flutterwave\Flutterwave;
use Flutterwave\Library\Modal;
# start a session.
session_start();
try {
Flutterwave::bootstrap();
$customHandler = new PaymentHandler();
$client = new Flutterwave();
$modalType = Modal::POPUP; // Modal::POPUP or Modal::STANDARD
$controller = new PaymentController( $client, $customHandler, $modalType );
} catch(\Exception $e ) {
echo $e->getMessage();
}
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$request = $_REQUEST;
$request['redirect_url'] = $_SERVER['HTTP_ORIGIN'] . $_SERVER['REQUEST_URI'];
try {
$controller->process( $request );
} catch(\Exception $e) {
echo $e->getMessage();
}
}
$request = $_GET;
# Confirming Payment.
if(isset($request['tx_ref'])) {
$controller->callback( $request );
} else {
}
exit();
Create a .env file and add the bootstrap method first before initiating a charge.
use \Flutterwave\Flutterwave;
# normal configuration
Flutterwave::bootstrap(); # this will use the default configuration set in .env
if you do not wish to use a .env, you can simply pass your API keys like the example below.
use \Flutterwave\Helper\Config;
$myConfig = Config::setUp(
'FLWSECK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X',
'FLWPUBK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X',
'FLWSECK_XXXXXXXXXXXXXXXX',
'staging'
);
Flutterwave::bootstrap($myConfig);
All of the SDK's tests are written with PHP's phpunit
module. The tests currently test:
Account
,
Card
,
Transfer
,
Preauth
,
Collection Subaccount
,
Payout Subaccount
,
Subscriptions
and
Paymentplan
They can be run like so:
phpunit
NOTE: If the test fails for creating a subaccount, just change the
account_number
account_bank
andbusinesss_email
to something differentNOTE: The test may fail for account validation -
Pending OTP validation
depending on whether the service is down or not
We understand that you may run into some errors while integrating our library. You can read more about our error messages here.
For authorization
and validation
error responses, double-check your API keys and request. If you get a server
error, kindly engage the team for support.
For additional assistance using this library, contact the developer experience (DX) team via email or on slack.
You can also follow us @FlutterwaveEng and let us know what you think 😊.
Read more about our community contribution guidelines here
By contributing to this library, you agree that your contributions will be licensed under its MIT license.
Copyright (c) Flutterwave Inc.