File: //var/www/html/qcr24/app/application/controllers/admin/DirectDebit.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class DirectDebit extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('admin/mrentout');
$this->load->model('mcommon');
$this->load->library('advantagepay');
$this->recs_per_page = 200;
$this->final_response = array();
$this->final_response['result_value'] = array();
}
public function check_status()
{//echo 1;die;
$not_authorized_payments = $this->mrentout->get_not_authorized_payments();
//print_r($not_authorized_payments);die;
if (!empty($not_authorized_payments)) {
foreach ($not_authorized_payments as $not_authorized_payment) {
try {
$advantage_pay_token = $this->advantagepay->getToken($not_authorized_payment['advantage_pay_credentials']);
$advantage_pay_token = json_decode($advantage_pay_token, true);
//echo '<pre>';print_r($advantage_pay_token);die;
if (!$advantage_pay_token) {
$return_data = array('status' => false, 'msg' => 'Token not generated');
echo json_encode($return_data);
die;
}
$direct_debit_response = $this->advantagepay->viewDirectDebits($not_authorized_payment['direct_debit_id'], $advantage_pay_token['access_token']);
$direct_debit_response_array = json_decode($direct_debit_response, true);
//print_r($direct_debit_response_array);die;
// if(!$direct_debit_response_array){
// $return_data = array('status' => false, 'msg' => 'Direct debit not created');
// echo json_encode($return_data);die;
// }
// if(isset($direct_debit_response_array['errorCode'])){
// $return_data = array('status' => false, 'msg' => $direct_debit_response_array['messages'][0]);
// echo json_encode($return_data);die;
// }
if (isset($direct_debit_response_array['Status'])) {
//if($direct_debit_response_array['Status'] == 'Active'){
$is_authorised = ($direct_debit_response_array['Status'] == 'Active') ? 1 : (($direct_debit_response_array['Status'] == 'Pending') ? 2 : 0);
$this->db->update('rent_out_vehcile', array('direct_debit_status_response' => $direct_debit_response, 'is_authorised' => $is_authorised, 'direct_debit_status' => $direct_debit_response_array['Status']), array('rent_out_id' => $not_authorized_payment['rent_out_id']));
//echo $this->db->last_query();die;
//}
}
//echo '<pre>';print_r($direct_debit_response_array);die;
} catch (Exception $e) {
// this will not catch DB related errors. But it will include them, because this is more general.
$return_data = array('status' => false, 'msg' => $e->getMessage());
echo json_encode($return_data);
die;
}
}
echo 'All direct debit record status updated successfully';
die;
}
}
public function get_payments_cron($company_id)
{
try {
$get_company_credential = $this->mcommon->getRow('master_company',array('company_id'=>$company_id));
$payment_response_array = $this->get_payments(0,$get_company_credential['advantage_pay_credentials']);
//echo '<pre>';print_r($payment_response_array);die;
if (isset($payment_response_array['Meta']['total_recs']) && !empty($payment_response_array['Meta']['total_recs'] > 0)) {
$drivers = $this->db->select('md.driver_id,ddc.advantage_pay_customer_id')->from('master_driver md')->join('direct_debit_customers ddc','ddc.driver_id = md.driver_id','inner')->where('md.status !=', 3)->get()->result_array();
if (empty($drivers)) {
$return_data = array('status' => false, 'msg' => 'Driver not found');
echo json_encode($return_data);
die;
}
$drivers_advantage_pay_id_array = array_column($drivers, 'advantage_pay_customer_id');
// echo '<pre>';print_r($drivers);
// echo '<pre>';print_r($drivers_advantage_pay_id_array);die;
foreach ($payment_response_array['result_value'] as $payment_records) {
$search_key = array_search($payment_records['Customer']['Code'], $drivers_advantage_pay_id_array);
//echo $search_key;die;
if(!empty($payment_records['ExternalID'])){
$payment_records_data[] = array(
'direct_debit_id' => $payment_records['ExternalID'],
'payment_code' => $payment_records['Code'],
'driver_id' => (($search_key) ? $drivers[$search_key]['driver_id'] : NULL),
'created_ts' => (($payment_records['DateCreated']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateCreated'])) : NULL),
'paid_ts' => (($payment_records['DatePaid']) ? date('Y-m-d H:i:s', strtotime($payment_records['DatePaid'])) : NULL),
'failed_ts' => (($payment_records['DateFailed']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateFailed'])) : NULL),
'clears_date' => (($payment_records['DateClears']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateClears'])) : NULL),
'settled_date' => (($payment_records['DateSettled']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateSettled'])) : NULL),
'updated_ts' => (($payment_records['DateUpdated']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateUpdated'])) : NULL),
'payment_type' => ((in_array($payment_records['PaymentType'], array('direct_debit_bank_account', 'direct_debit_credit_card'))) ? 1 : 2),
'payment_status' => !empty($payment_records['FailCode']) ? 'Failed' : 'Success',
'amount' => $payment_records['Amount'],
'amount_inc_fees' => $payment_records['AmountIncFees'],
'payment_response_json' => $payment_records['ExternalID'],
'fail_code' => $payment_records['FailCode'],
'failed_reason' => $payment_records['FailReason'],
'payment_response_json' => json_encode($payment_records)
);
}
}
//echo '<pre>';print_r($payment_records_data);die;
if (!empty($payment_records_data)) {
$this->db->insert_batch('direct_debit_payments', $payment_records_data);
}
echo 'Execution Completed';
die;
}
} catch (Exception $e) {
// this will not catch DB related errors. But it will include them, because this is more general.
$return_data = array('status' => false, 'msg' => $e->getMessage());
echo json_encode($return_data);
die;
}
echo 'All direct debit record status updated successfully';
die;
}
function get_payments($page,$advantage_pay_credentials)
{
if (intval($page) == 0) {
$this->final_response = array();
$this->final_response['result_value'] = array();
}
$advantage_pay_token = $this->advantagepay->getToken($advantage_pay_credentials);
$advantage_pay_token = json_decode($advantage_pay_token, true);
if (!$advantage_pay_token) {
$return_data = array('status' => false, 'msg' => 'Token not generated');
echo json_encode($return_data);
die;
}
$datepaidfrom = date('dmY', strtotime('-2 days'));
$datepaidto = date('dmY', strtotime('-1 days'));
$payment_response = $this->advantagepay->payments($advantage_pay_token['access_token'], $datepaidfrom, $datepaidto, $page, $this->recs_per_page);
$payment_response_array = json_decode($payment_response, true);
//echo '<pre>';print_r($payment_response_array);die;
if (!empty($payment_response_array)) {
if (isset($payment_response_array['Meta']['total_recs']) && !empty($payment_response_array['Meta']['total_recs'] > 0)) {
$this->final_response['result_value'] = array_merge($this->final_response['result_value'], $payment_response_array['Records']);
$this->final_response['Meta'] = $payment_response_array['Meta'];
}
if ($payment_response_array['Meta']['total_recs'] >= (intval($page) * intval($this->recs_per_page))) {
$page++;
$this->get_payments($page,$advantage_pay_credentials);
}
}
return $this->final_response;
}
// public function get_payments_failed()
// {
// try {
// $advantage_pay_token = $this->advantagepay->getToken();
// $advantage_pay_token = json_decode($advantage_pay_token, true);
// if (!$advantage_pay_token) {
// $return_data = array('status' => false, 'msg' => 'Token not generated');
// echo json_encode($return_data);
// die;
// }
// $failed_payment_response = $this->advantagepay->failedPayments($advantage_pay_token['access_token'], date('0102Y'));
// $failed_payment_response_array = json_decode($failed_payment_response, true);
// echo '<pre>';
// print_r($failed_payment_response_array);
// die;
// if (!$failed_payment_response_array) {
// $return_data = array('status' => false, 'msg' => 'Direct debit not created');
// echo json_encode($return_data);
// die;
// }
// if (isset($direct_debit_response_array['errorCode'])) {
// $return_data = array('status' => false, 'msg' => $direct_debit_response_array['messages'][0]);
// echo json_encode($return_data);
// die;
// }
// if (isset($direct_debit_response_array['Status'])) {
// if ($direct_debit_response_array['Status'] == 'Active') {
// $is_authorised = ($direct_debit_response_array['Status'] == 'Active') ? 1 : 0;
// $this->db->update('rent_out_vehcile', array('direct_debit_status_response' => $direct_debit_response, 'is_authorised' => $is_authorised), array('rent_out_id' => $not_authorized_payment['rent_out_id']));
// //echo $this->db->last_query();die;
// }
// }
// //echo '<pre>';print_r($direct_debit_response_array);die;
// } catch (Exception $e) {
// // this will not catch DB related errors. But it will include them, because this is more general.
// $return_data = array('status' => false, 'msg' => $e->getMessage());
// echo json_encode($return_data);
// die;
// }
// echo 'All direct debit record status updated successfully';
// die;
// }
// public function get_payments_settled()
// {
// try {
// $advantage_pay_token = $this->advantagepay->getToken();
// $advantage_pay_token = json_decode($advantage_pay_token, true);
// if (!$advantage_pay_token) {
// $return_data = array('status' => false, 'msg' => 'Token not generated');
// echo json_encode($return_data);
// die;
// }
// $failed_payment_response = $this->advantagepay->failedPayments($advantage_pay_token['access_token'], date('0102Y'));
// $failed_payment_response_array = json_decode($failed_payment_response, true);
// echo '<pre>';
// print_r($failed_payment_response_array);
// die;
// if (!$failed_payment_response_array) {
// $return_data = array('status' => false, 'msg' => 'Direct debit not created');
// echo json_encode($return_data);
// die;
// }
// if (isset($direct_debit_response_array['errorCode'])) {
// $return_data = array('status' => false, 'msg' => $direct_debit_response_array['messages'][0]);
// echo json_encode($return_data);
// die;
// }
// if (isset($direct_debit_response_array['Status'])) {
// if ($direct_debit_response_array['Status'] == 'Active') {
// $is_authorised = ($direct_debit_response_array['Status'] == 'Active') ? 1 : 0;
// $this->db->update('rent_out_vehcile', array('direct_debit_status_response' => $direct_debit_response, 'is_authorised' => $is_authorised), array('rent_out_id' => $not_authorized_payment['rent_out_id']));
// //echo $this->db->last_query();die;
// }
// }
// //echo '<pre>';print_r($direct_debit_response_array);die;
// } catch (Exception $e) {
// // this will not catch DB related errors. But it will include them, because this is more general.
// $return_data = array('status' => false, 'msg' => $e->getMessage());
// echo json_encode($return_data);
// die;
// }
// echo 'All direct debit record status updated successfully';
// die;
// }
public function send_push_notification(){
send_android_notification();
}
}