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!
My website is live.
I'm getting this when i try to retrieve things in JSON
{"status":"success",
"message":"Hosted Link",
"data":{
"link":"undefined5414fd5a5daf0ecec70e"
}
}
The problem is this link inside data which is being undefined.
Any help plz.
You really are talented. Making something from that which you have. Congratulations on coming this far and God bless you to go further. Thanks for the easily understandable tutorial.
Can I use the process.php to send data to SQL database for recurring payment. And please how does the process.php works cos I can't see anywhere where pay.php was referring to process.php please I really need this since am working on a subscription base website where recurring payment is needed. Thanks and I really need this which is kind of taking too late long 😂😂😂😂.
Can you please create a tutorial on mobile money payment and withdraw.
Thanks @Zubdev this really good, please can you do a video about recurring payments please. Thanks again.
Hello, please your tutorial is great. I've been following you for sometime now. Am a beginner in PHP so I have no idea how to fully manipulate flutterwave integration to what I want. But I have just two questions.
1. Please how do I use recurring payment on my site?
2. How do I send payment details to database?
Please help. Thanks in advance....