Check flutterwave transfer status
This commit is contained in:
@@ -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 .=" <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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user