| Current Path : /home/users/unlimited/www/eshop.codeskitter.site/application/libraries/ |
| Current File : /home/users/unlimited/www/eshop.codeskitter.site/application/libraries/Flutterwave.php |
<?php
/*
Flutterwave API v3 - new API with new endpoints
-----------------------------------------------
1. get_credentials()
2. verify_transaction($transaction_id)
3. create_payment($data)
*/
#[\AllowDynamicProperties]
class Flutterwave
{
private $secret_key, $public_key, $curl;
public $temp = array();
function __construct($mode = 'live')
{
$this->CI = &get_instance();
$settings = get_settings('payment_method', true);
$this->public_key = (isset($settings['flutterwave_public_key'])) ? $settings['flutterwave_public_key'] : "";
$this->secret_key = (isset($settings['flutterwave_secret_key'])) ? $settings['flutterwave_secret_key'] : "";
$this->encryption_key = (isset($settings['flutterwave_encryption_key'])) ? $settings['flutterwave_encryption_key'] : "";
$this->currency_code = (isset($settings['flutterwave_currency_code'])) ? $settings['flutterwave_currency_code'] : "";
$this->secret_hash = (isset($settings['flutterwave_webhook_secret_key'])) ? $settings['flutterwave_webhook_secret_key'] : "";
}
public function get_credentials()
{
$credentials = array(
'public_key' => $this->public_key,
'secret_key' => $this->secret_key,
'encryption_key' => $this->encryption_key,
'currency_code' => $this->currency_code,
'secret_hash' => $this->secret_hash,
);
return $credentials;
}
function verify_transaction($transaction_id)
{
/*
transaction_id=FLUTTERWAVE_TXN_ID
*/
$url = "https://api.flutterwave.com/v3/transactions/$transaction_id/verify";
$method = "GET";
$create_transfer = $this->curl_request($url, $method);
return $create_transfer;
}
public function refund_payment($txn_id, $amount)
{
$data = array(
'amount' => $amount,
);
$url = "https://api.flutterwave.com/v3/transactions/$txn_id/refund";
$method = 'POST';
$response = $this->curl_request($url, $method, $data);
if ($response['status'] == 'success') {
$res = json_decode($response['body'], true);
return $res;
} else {
return $response;
}
}
function create_payment($data)
{
/*
To be passed in an array not in JSON
{
"tx_ref":"hooli-tx-1920bbtytty",
"amount":"100",
"currency":"NGN",
"redirect_url":"https://webhook.site/9d0b00ba-9a69-44fa-a43d-a82c33c36fdc",
"payment_options":"card",
"meta":{
"consumer_id":23,
"consumer_mac":"92a3-912ba-1192a"
},
"customer":{
"email":"user@gmail.com",
"phonenumber":"080****4528",
"name":"Yemi Desola"
},
"customizations":{
"title":"Pied Piper Payments",
"description":"Middleout isn't free. Pay the price",
"logo":"https://assets.piedpiper.com/logo.png"
}
}
*/
$url = "https://api.flutterwave.com/v3/payments";
$method = "POST";
$create_transfer = $this->curl_request($url, $method, $data);
return $create_transfer;
}
public function curl_request($end_point, $method, $data = array())
{
$this->curl = curl_init();
$data['seckey'] = $this->secret_key;
curl_setopt_array($this->curl, array(
CURLOPT_URL => $end_point,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => strtoupper($method),
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Authorization: Bearer " . $this->secret_key
),
));
$response = curl_exec($this->curl);
curl_close($this->curl);
return $response;
}
}