Check flutterwave transfer status

This commit is contained in:
ChiefSoft works
2022-06-05 17:10:28 +00:00
parent 015de9972a
commit 07297f5758
3 changed files with 113 additions and 4 deletions
+27 -1
View File
@@ -151,6 +151,29 @@ class Bkotransaction extends Bko_Controller {
}
}
break;
case 'CHECK':
$mysql = "SELECT response -> 'data' -> 'data' AS \"data\" FROM flutterwave WHERE money_transfer_id=".((int)$sendmoney_id)." ORDER BY created DESC LIMIT 1";
$query = $this->db->query($mysql);
$row = $query->row_array();
if (is_array($row) && count($row)>0) {
$this->load->helper('FlutterWave');
$data = json_decode($row['data'], true);
$out = flutterwave_api_check($data);
if (is_array($out) && $out['result'] > 0) {
echo $out['status'];
} else {
if (is_array($out) && array_key_exists('status',$out)) {
echo $out['status'];
} else {
var_dump($out); // Unexpected failure
}
}
} else {
echo "No flutterwave transfer found!";
}
break;
}
}
@@ -165,7 +188,10 @@ class Bkotransaction extends Bko_Controller {
$myTable .="<tr><td style='width:100px;'><b>Amount</b></td><td>" . $out['amount'] . "</td></tr>";
$myTable .="<tr><td style='width:100px;'><b>Fee</b></td><td>" . $out['fee'] . "</td></tr>";
$myTable .="<tr><td style='width:100px;'><b>Channel</b></td><td><b>Flutterwave </b></td></tr>";
$myTable .="<tr><td style='width:100px;'><b></b></td><td><div id='btump" . $out['id'] . "'><input type=submit id=\"acmp" . $out['id'] . "\" onclick=\"return smoneyProcessComplete('" . $out['id'] . "')\" name=\"manage\" class=\"btn btn-info btn-sm\" value=\"Complete\"></div></td></tr>";
$myTable .="<tr><td style='width:100px;'><b></b></td><td><div id='btump" . $out['id'] . "'>";
$myTable .="<input type=submit id=\"acmp" . $out['id'] . "\" onclick=\"return smoneyProcessComplete('" . $out['id'] . "')\" name=\"manage\" class=\"btn btn-info btn-sm\" value=\"Complete\">";
$myTable .=" &nbsp; <input type=submit id=\"chck" . $out['id'] . "\" onclick=\"return smoneyProcessCheck('" . $out['id'] . "')\" name=\"check\" class=\"btn btn-info btn-sm\" value=\" ? \">";
$myTable .="</div></td></tr>";
$myTable .="</table></form> [another tabble]";
return $myTable;
+70 -3
View File
@@ -58,9 +58,9 @@ if ( ! function_exists('flutterwave_api'))
//var_dump( $data);
//exit;
/*
{"account_bank":"044","account_number":"0690000031","amount":"123.00","narration":"Transfer from Olusesan Amey
ses66181+1@gmail.com","currency":"NGN","reference":"120-0-97165300 1652605656","debit_currency":"NGN"} //// {"status":200,"statusText":"OK","data":{"status":"success","message":"Transfer Queued Successfully","data":{"id":345332,"account_number":"0690000031","bank_code":"044","full_name":"Forrest Green","created_at":"2022-05-15T09:07:37.000Z","currency":"NGN","debit_currency":"NGN","amount":123,"fee":10.75,"status":"NEW","reference":"120-0-97165300 1652605656","meta":null,"narration":"Transfer from Olusesan Amey
ses66181+1@gmail.com","complete_message":"","requires_approval":0,"is_approved":1,"bank_name":"ACCESS BANK NIGERIA"}}}
{"account_bank":"044","account_number":"0690000031","amount":"123.00","narration":"Transfer from Olusesan Amey
ses66181+1@gmail.com","currency":"NGN","reference":"120-0-97165300 1652605656","debit_currency":"NGN"} //// {"status":200,"statusText":"OK","data":{"status":"success","message":"Transfer Queued Successfully","data":{"id":345332,"account_number":"0690000031","bank_code":"044","full_name":"Forrest Green","created_at":"2022-05-15T09:07:37.000Z","currency":"NGN","debit_currency":"NGN","amount":123,"fee":10.75,"status":"NEW","reference":"120-0-97165300 1652605656","meta":null,"narration":"Transfer from Olusesan Amey
ses66181+1@gmail.com","complete_message":"","requires_approval":0,"is_approved":1,"bank_name":"ACCESS BANK NIGERIA"}}}
*/
// Further processing ...
@@ -104,3 +104,70 @@ ses66181+1@gmail.com","complete_message":"","requires_approval":0,"is_approved":
return $out;
}
}
if ( ! function_exists('flutterwave_api_check'))
{
function flutterwave_api_check($in)
{
$out = array();
$out['status'] = 'Unhandled error';
$out['result'] = -1;
$ch = curl_init();
$url = "http://host.docker.internal:9086/status/".$in['id'];
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
curl_close($curl);
//var_dump($result);
/*
string(592) "{"status":200,"statusText":"OK","data":{"status":"success","message":"Transfer fetched","data":{"id":348032,"account_number":"0690000031","bank_code":"044","full_name":"Forrest Green","created_at":"2022-06-05T04:22:49.000Z","currency":"NGN","debit_currency":"NGN","amount":123,"fee":10.75,"status":"FAILED","reference":"120-0-37263200 1654402969","meta":null,"narration":"Transfer from Olusesan Amey
ses66181+1@gmail.com","approver":null,"complete_message":"DISBURSE FAILED: Insufficient funds in customer balance","requires_approval":0,"is_approved":1,"bank_name":"ACCESS BANK NIGERIA"}}}"
*/
$data = json_decode($result, true);
// Further processing ...
if ($data!=null && is_array($data)) {
if (array_key_exists('status',$data) && $data['status']=='200') {
if (array_key_exists('data',$data) && is_array($data['data'])) {
$raw = $data['data'];
if (array_key_exists('status',$raw) && $raw['status']=='success') {
$out['result'] = 0; // OK
$out['status'] = $raw['message'];
if (array_key_exists('data',$raw) && is_array($raw['data'])) {
$out['status'].= ': '.$raw['data']['complete_message'];
} else {
$out['status'].= ': No transfer data found -> ' . json_encode($raw);
}
} else {
$out['result'] = -5;
$out['status'] = 'Flutterwave response failure: ' . json_encode($raw);
}
} else {
$out['result'] = -4;
$out['status'] = 'Missing flutterwave response: ' . $result;
}
} else {
// Error response
$out['result'] = -3;
if (array_key_exists('status',$data)) {
$out['status'] = $data['status'];
} else {
$out['status'] = 'Missing starus response: ' . $result;
}
}
} else {
$out['result'] = -2;
$out['status'] = 'Invalid service response: ' . $result;
}
return $out;
}
}
@@ -127,6 +127,22 @@ return false;
});
return false;
}
function smoneyProcessCheck(link_id) {
var f = document.getElementById('sendmoneyProcessPage'+link_id);
$('#btump'+link_id).html('Processing...');
$('#chck'+link_id).prop('disabled', true);
$.ajax({
url: "/bkotransaction/smTransmitProcess?proc=CHECK&sendmoney_id="+link_id+'&tcode=BLANK&tref=BLANK'
}).done(function (data) {
$('#btump'+link_id).html(data);
//document.offer_individual.rec_email.value = '';
$('#chck'+link_id).prop('disabled', false);
});
return false;
}
// -->
</script>