In this simple article i will have to take you through the Fluttervave document to easily implement the system into your PHP project.
So Let Get Started!
Throughout this process we create just 3 files in our project named: index, pay and process
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Rave payment Gateway</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="">
</head>
<body>
<form action="pay.php" method="POST">
<label>Email</label>
<input type="email" name="email">
<br>
<label>Amount</label>
<input type="number" name="amount">
<br>
<input type="submit" name="pay" vlaue="Send Payment">
</form>
</body>
</html>
<?php
if(isset($_POST['pay']))
{
$email = $_POST['email'];
$amount = $_POST['amount'];
//* Prepare our rave request
$request = [
'tx_ref' => time(),
'amount' => $amount,
'currency' => 'NGN',
'payment_options' => 'card',
'redirect_url' => 'http://localhost/yt/rave/process.php',
'customer' => [
'email' => $email,
'name' => 'Zubdev'
],
'meta' => [
'price' => $amount
],
'customizations' => [
'title' => 'Paying for a sample product',
'description' => 'sample'
]
];
//* Ca;; f;iterwave emdpoint
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.flutterwave.com/v3/payments',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($request),
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer FLWSECK_TEST-eee25be1b44ef9a132a872075b3a0910-X',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
$res = json_decode($response);
if($res->status == 'success')
{
$link = $res->data->link;
header('Location: '.$link);
}
else
{
echo 'We can not process your payment';
}
}
?>
<?php
if(isset($_GET['status']))
{
//* check payment status
if($_GET['status'] == 'cancelled')
{
// echo 'YOu cancel the payment';
header('Location: index.php');
}
elseif($_GET['status'] == 'successful')
{
$txid = $_GET['transaction_id'];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.flutterwave.com/v3/transactions/{$txid}/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Authorization: Bearer FLWSECK_TEST-eee25be1b44ef9a132a872075b3a0910-X"
),
));
$response = curl_exec($curl);
curl_close($curl);
$res = json_decode($response);
if($res->status)
{
$amountPaid = $res->data->charged_amount;
$amountToPay = $res->data->meta->price;
if($amountPaid >= $amountToPay)
{
echo 'Payment successful';
//* Continue to give item to the user
}
else
{
echo 'Fraud transactio detected';
}
}
else
{
echo 'Can not process payment';
}
}
}
?>
If you have any issue or problem base on this please use the comment below to nofify me i will surly get back as soon as possible.
Thank You!
This is what i get
Parse error: syntax error, unexpected '[' in C:\xampplite\htdocs\VTU\pay2.php on line 8
and when i deploy on the web server online the page is blank
Please assist.
Hi thanks so much for this , but is there a way to get the transaction details ghrou GET and also, am using this gateway for an E-commerce website where order_id is necessary, so is there a way to send order_id as a GET request through the pay.php and also update database with it in the process.php ?
thank you very much for this code. Any php code for initiating a withdraw from flutter wave dashboard.
im finishing my payment but i cant get 'Payment successful'; what I should do?
http://localhost/yt/rave/process.php?status=successful&tx_ref=1624381153&transaction_id=2302489
what I see right now is this
Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
Error 404 plz help