Created
March 15, 2024 09:35
-
-
Save adejorosam/c67c11eb14e0e2ebc639433c0ce86da3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public function processWebhook($payload) //create new fund | |
{ | |
$transactionDetails = container('PaystackGatewayModel')->retrieveTransactionDetails($payload['reference']); | |
if($transactionDetails->amount != $payload['amount']) | |
{ | |
$message1 = $payload['reference']; | |
$message2 = $payload['amount']; | |
$message3 = $payload['ipaddress']; | |
$message4 = $payload['email']; | |
$message5 = $payload['Fraudulent transaction']; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
die("You are a THIEF!!!"); | |
} | |
if($payload['webhookType'] == "nubanPayment") | |
{ | |
//fetch CustID from NUBAN table | |
$nuban = $this->getNubanforWebhook($payload); | |
$decodedNuban = json_decode(json_encode($nuban), true); | |
$payload += $decodedNuban; | |
$result = $this->mutualFundAdminLogin($payload['CustID'], $payload['admin']); | |
$payload['fullName'] = str_replace(",","",$result['customer'][0]["Name"]); | |
$payload['CAMID'] = $result['customer'][0]["CAMID"]; | |
$payload['SECID'] = $result['customer'][0]["SECID"]; | |
$payload['ASSETID'] = $result['customer'][0]["ASSETID"]; | |
//check if customer has product involvement | |
$load["CustID"] = $payload["CustID"]; | |
$BIZID = $payload["CAMID"]; | |
$load["businessInvolvement"] = $DB = CAM_DB_NAME; | |
//get Involvement Type and company | |
$nubanProduct = $this->getNubanProduct(strtoupper($payload["product"])); | |
$payload['company'] = $nubanProduct->company; | |
$load["involvementType"] = $INVOLVEMENT = $nubanProduct->involvementType; | |
$verify = $this->verifyProductInvolvement($BIZID, $INVOLVEMENT, $DB); | |
if(strtoupper($verify["data"]) != "TRUE") | |
{ | |
$create = $this->createInvolvement($load); | |
if(!isset($payload["CAMID"]) || empty($payload["CAMID"]) || is_null($payload["CAMID"]) || $payload["CAMID"] == "") | |
{ | |
$payload["CAMID"] = $create["BIZID"]; | |
} | |
} | |
if((is_null($payload['CAMID']) || empty($payload['CAMID']) || $payload['CAMID'] == "") ||(is_null($payload['fullName']) || empty($payload['fullName']) || $payload['fullName'] == "")) | |
{ | |
$result = $this->mutualFundAdminLogin($payload['CustID'], $payload['admin']); | |
$payload['fullName'] = str_replace(",","",$result['customer'][0]["Name"]); | |
$payload['CAMID'] = $result['customer'][0]["CAMID"]; | |
} | |
//check product subscribed | |
if(strtoupper($payload['product']) == "CSPFIFUND") //alpha fund subscription | |
{ | |
//check for product description, registerID, ixtrac accountNumber, and set initiatedPrice | |
$res = container('mutualFundModel')->accountNumber($payload['fundCode'], $payload['CustID']); | |
$decodedRes = json_decode(json_encode($res), true); | |
$payload['registerID'] = $decodedRes[0]['REGISTER_ID']; | |
$payload['accountNumber'] = $decodedRes[0]['ACCOUNT_NUMBER']; | |
$payload['productDescription'] = $decodedRes[0]['DESCRIPTION']; | |
//fetch current fund price | |
$ress = container('mutualFundModel')->lastMutualFundtransactionPrice($payload['fundCode']); | |
$decodedRess = json_decode(json_encode($ress), true); | |
// $payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
$payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
$payload['merchantId'] = PAYSTACK_ID; | |
$payload['channel'] = "Virtual Account"; | |
// $payload['admin'] = "Virtual Account"; | |
$payload['clientId'] = $payload['CAMID']; | |
$payload['companyName'] = "CAM"; | |
$payload['currency'] = "566"; | |
$payload['productId'] = FI10; | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Merchant ID: " .$payload["merchantId"]; | |
$message3 = "Product ID: " .$payload["productId"]; | |
$message4 = "Record prepared for processing"; | |
$message5 = "Proceed to attempt funding"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
//Gl posting | |
$glPost = container('PaystackGatewayModel')->postMutualfundsVirtualTransaction($payload, $payload['reference'],$payload['merchantId']); | |
// var_dump("code is " . $glPost["code"]); | |
// var_dump($glPost);\ | |
if($glPost["code"] == 200) { | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Funding Status Code: " .$glPost["code"]; | |
$message3 = "Funding Status Message: " .$glPost["message"]; | |
$message4 = "Virtual Funding Complete"; | |
$message5 = "Proceeding to book Subscription"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
//process subscription | |
$payload['subscriptionAmount'] = $payload['amount']; | |
$payload['channel'] = "bank_transfer"; | |
$res = container('mutualFundModel')->newWebhookFundSubscription($payload); | |
if($res["code"] == 200){ | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Subscription Status Code: " .$res["code"]; | |
$message3 = "Subscription Status Message: " .$res["message"]; | |
$message4 = "Subscription successful"; | |
$message5 = "Proceed to notify RICA"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
$mail = [ | |
"fullName" => str_replace(",","",$payload['fullName']), | |
"CustID" => $payload['CustID'], | |
"admin" => $payload['admin'], | |
"phoneNumber" => $payload['phoneNumber'], | |
"emailAddress" => $payload['emailAddress'], | |
"productType" => $payload['productDescription'], | |
"amount" => $payload['subscriptionAmount'], | |
"transactionType" => "SUBSCRIPTION", | |
"redemptionDate" => date_create($res["date_"]) | |
]; | |
(new Mailer()) | |
->to(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Virtual Account Transaction Notification") | |
->usingView('admin_rica_notify', $mail) | |
->send(); | |
return $data = ["message" => "Subscription Successful", "code" => 200]; | |
}else{ | |
//log event | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Subscription Status Code: " .$res["code"]; | |
$message3 = "Subscription Status Message: " .$res["message"]; | |
$message4 = "Subscription failed"; | |
$message5 = "Proceed to notify RICA of Failure"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
$mail = [ | |
"fullName" => str_replace(",","",$payload['fullName']), | |
"CustID" => $payload['CustID'], | |
"admin" => $payload['admin'], | |
"phoneNumber" => $payload['phoneNumber'], | |
"emailAddress" => $payload['emailAddress'], | |
"productType" => $payload['productDescription'], | |
"amount" => $payload['subscriptionAmount'], | |
"transactionType" => "SUBSCRIPTION", | |
"redemptionDate" => date_create($res["date_"]) | |
]; | |
(new Mailer()) | |
->to(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Virtual Account Transaction Notification Failed") | |
->usingView('admin_rica_notify', $mail) | |
->send(); | |
return $data = ["message" => "Subscription Failed", "code" => 400]; | |
} | |
}else{ | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Funding Status Code: " .$glPost["code"]; | |
$message3 = "Funding Status Message: " .$glPost["message"]; | |
$message4 = "Virtual Funding Failed"; | |
$message5 = "Cannot Proceed to book Subscription"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
return $data = ["message" => $glPost["message"], "code" => $glPost["code"]]; | |
} | |
}elseif(strtoupper($payload['product']) == "CSWALLET") //alpha fund subscription | |
{ | |
$payload['merchantId'] = PAYSTACK_ID; //Should be changed to CSWALLET merchantId | |
$payload['channel'] = "Virtual Account"; | |
$payload['admin'] = "Virtual Account"; | |
$payload['clientId'] = $payload['CAMID']; | |
$payload['companyName'] = "CAM"; | |
$payload['currency'] = "566"; | |
$payload['productId'] = CSWALLET_CASHACCOUNT; | |
$payload['productDescription'] = CSWALLET_DESCRIPTION; | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Merchant ID: " .$payload["merchantId"]; | |
$message3 = "Product ID: " .$payload["productId"]; | |
$message4 = "Record prepared for processing"; | |
$message5 = "Proceed to attempt funding"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
//Gl posting | |
$glPost = container('PaystackGatewayModel')->postWalletVirtualTransaction($payload, $payload['reference'],$payload['merchantId']); | |
// var_dump("code is " . $glPost["code"]); | |
// var_dump($glPost);\ | |
if($glPost["code"] == 200) { | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Funding Status Code: " .$glPost["code"]; | |
$message3 = "Funding Status Message: " .$glPost["message"]; | |
$message4 = "Virtual Funding Complete"; | |
$message5 = "Proceeding to Credit Wallet"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
//process subscription | |
$payload['transactionAmount'] = $payload['amount']; | |
$payload["productType"] = "Virtual Account"; | |
$payload["transactionRef"] = $payload['reference']; | |
$payload["narration"] = "Being credit to ". $payload["fullName"]."'s wallet from ". $payload["productType"]; //for wallet | |
$res = container('mutualFundModel')->newWebhookCreditWallet($payload); | |
if($res["code"] == 200){ | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Wallet Credit Status Code: " .$res["code"]; | |
$message3 = "Wallet Credit Status Message: " .$res["message"]; | |
$message4 = "Wallet Credit successful"; | |
$message5 = "Proceed to notify RICA"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
$mail = [ | |
"fullName" => str_replace(",","",$payload['fullName']), | |
"CustID" => $payload['CustID'], | |
"admin" => $payload['admin'], | |
"phoneNumber" => $payload['phoneNumber'], | |
"emailAddress" => $payload['emailAddress'], | |
"productType" => $payload['productDescription'], | |
"amount" => $payload['transactionAmount'], | |
"transactionType" => "DEPOSIT", | |
"redemptionDate" => date_create($res["date_"]) | |
]; | |
(new Mailer()) | |
->to(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Virtual Account Transaction Notification") | |
->usingView('admin_rica_notify', $mail) | |
->send(); | |
return $data = ["message" => "Wallet Credit Successful", "code" => 200]; | |
}else{ | |
//log event | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Wallet Credit Status Code: " .$res["code"]; | |
$message3 = "Wallet Credit Status Message: " .$res["message"]; | |
$message4 = "Wallet Credit failed"; | |
$message5 = "Proceed to notify RICA of Failure"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
$mail = [ | |
"fullName" => str_replace(",","",$payload['fullName']), | |
"CustID" => $payload['CustID'], | |
"admin" => $payload['admin'], | |
"phoneNumber" => $payload['phoneNumber'], | |
"emailAddress" => $payload['emailAddress'], | |
"productType" => $payload['productDescription'], | |
"amount" => $payload['transactionAmount'], | |
"transactionType" => "DEPOSIT", | |
"redemptionDate" => date_create($res["date_"]) | |
]; | |
(new Mailer()) | |
->to(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Virtual Account Transaction Failure Notification") | |
->usingView('admin_rica_notify', $mail) | |
->send(); | |
return $data = ["message" => "Wallet Credit Failed", "code" => 400]; | |
} | |
}else{ | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Funding Status Code: " .$glPost["code"]; | |
$message3 = "Funding Status Message: " .$glPost["message"]; | |
$message4 = "Virtual Funding Failed"; | |
$message5 = "Cannot Proceed to Credit Wallet"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
return $data = ["message" => $glPost["message"], "code" => $glPost["code"]]; | |
} | |
}elseif(strtoupper($payload['product']) == "EQF"){ | |
//check for product description, registerID, ixtrac accountNumber, and set initiatedPrice | |
$res = container('mutualFundModel')->accountNumber($payload['fundCode'], $payload['CustID']); | |
$decodedRes = json_decode(json_encode($res), true); | |
$payload['registerID'] = $decodedRes[0]['REGISTER_ID']; | |
$payload['accountNumber'] = $decodedRes[0]['ACCOUNT_NUMBER']; | |
$payload['productDescription'] = $decodedRes[0]['DESCRIPTION']; | |
//fetch current fund price | |
$ress = container('mutualFundModel')->lastMutualFundtransactionPrice($payload['fundCode']); | |
$decodedRess = json_decode(json_encode($ress), true); | |
// $payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
$payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
$payload['merchantId'] = PAYSTACK_ID; | |
$payload['channel'] = "Virtual Account"; | |
// $payload['admin'] = "Virtual Account"; | |
$payload['clientId'] = $payload['CAMID']; | |
$payload['companyName'] = "CAM"; | |
$payload['currency'] = "566"; | |
$payload['productId'] = EQF_01; | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Merchant ID: " .$payload["merchantId"]; | |
$message3 = "Product ID: " .$payload["productId"]; | |
$message4 = "Record prepared for processing"; | |
$message5 = "Proceed to attempt funding"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
//Gl posting | |
$glPost = container('PaystackGatewayModel')->postMutualfundsVirtualTransaction($payload, $payload['reference'],$payload['merchantId']); | |
// var_dump("code is " . $glPost["code"]); | |
// var_dump($glPost);\ | |
if($glPost["code"] == 200) { | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Funding Status Code: " .$glPost["code"]; | |
$message3 = "Funding Status Message: " .$glPost["message"]; | |
$message4 = "Virtual Funding Complete"; | |
$message5 = "Proceeding to book Subscription"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
//process subscription | |
$payload['subscriptionAmount'] = $payload['amount']; | |
$payload['channel'] = "bank_transfer"; | |
$res = container('mutualFundModel')->newWebhookFundSubscription($payload); | |
if($res["code"] == 200){ | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Subscription Status Code: " .$res["code"]; | |
$message3 = "Subscription Status Message: " .$res["message"]; | |
$message4 = "Subscription successful"; | |
$message5 = "Proceed to notify RICA"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
$mail = [ | |
"fullName" => str_replace(",","",$payload['fullName']), | |
"CustID" => $payload['CustID'], | |
"admin" => $payload['admin'], | |
"phoneNumber" => $payload['phoneNumber'], | |
"emailAddress" => $payload['emailAddress'], | |
"productType" => $payload['productDescription'], | |
"amount" => $payload['subscriptionAmount'], | |
"transactionType" => "SUBSCRIPTION", | |
"redemptionDate" => date_create($res["date_"]) | |
]; | |
(new Mailer()) | |
->to(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Virtual Account Transaction Notification") | |
->usingView('admin_rica_notify', $mail) | |
->send(); | |
return $data = ["message" => "Subscription Successful", "code" => 200]; | |
}else{ | |
//log event | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Subscription Status Code: " .$res["code"]; | |
$message3 = "Subscription Status Message: " .$res["message"]; | |
$message4 = "Subscription failed"; | |
$message5 = "Proceed to notify RICA of Failure"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
$mail = [ | |
"fullName" => str_replace(",","",$payload['fullName']), | |
"CustID" => $payload['CustID'], | |
"admin" => $payload['admin'], | |
"phoneNumber" => $payload['phoneNumber'], | |
"emailAddress" => $payload['emailAddress'], | |
"productType" => $payload['productDescription'], | |
"amount" => $payload['subscriptionAmount'], | |
"transactionType" => "SUBSCRIPTION", | |
"redemptionDate" => date_create($res["date_"]) | |
]; | |
(new Mailer()) | |
->to(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Virtual Account Transaction Notification Failed") | |
->usingView('admin_rica_notify', $mail) | |
->send(); | |
return $data = ["message" => "Subscription Failed", "code" => 400]; | |
} | |
}else{ | |
//log event | |
$message1 = "CustID: " . $payload['CustID'] .", Biz ID: " . $payload['clientId'] ; | |
$message2 = "Funding Status Code: " .$glPost["code"]; | |
$message3 = "Funding Status Message: " .$glPost["message"]; | |
$message4 = "Virtual Funding Failed"; | |
$message5 = "Cannot Proceed to book Subscription"; | |
$this->activity_log($message1,$message2,$message3,$message4,$message5); | |
return $data = ["message" => $glPost["message"], "code" => $glPost["code"]]; | |
} | |
} | |
}elseif($payload['webhookType'] == "paystack_recovery") | |
{ | |
// var_dump("******************************************* payload ***********************************************************"); | |
// var_dump($payload); | |
//fetch success records for today and verify subscriptions were made, otherwise, create subscription | |
$transaction_1 = $this->retrieveTransactionDetails_1(); | |
$transaction_1 = json_decode(json_encode($transaction_1), true); | |
// var_dump("got here for fund1"); | |
foreach($transaction_1 as $trans) | |
{ | |
// var_dump("got here for fund2"); | |
// check if process is mutual fund then initiate subsription | |
if($trans['cash_account_id'] == FI10) | |
{ | |
// var_dump("got here for fund3"); | |
//check if subscritpion exist in local subscription table | |
$sub = container('mutualFundModel')->subscriptionTable() | |
->where([["transactionRef","=",$trans['transaction_ref']]]) | |
->first(); | |
// var_dump($trans['transaction_ref']); | |
// var_dump(count($sub)); | |
if(count($sub) == 0) | |
{ | |
//fetch fundCode | |
$fundCode = container('mutualFundModel')->getAFundCode($trans['cash_account_id']); | |
$fundCode = json_decode(json_encode($fundCode), true); | |
$payload['fundCode'] = $fundCode['fundCode']; | |
//fetch current fund price | |
$ress = container('mutualFundModel')->lastMutualFundtransactionPrice($payload['fundCode']); | |
$decodedRess = json_decode(json_encode($ress), true); | |
$payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
//prepare payload | |
$payload['CAMID'] = $trans['client_id']; | |
$payload['fullName'] = $trans['fullName']; | |
$payload['phoneNumber'] = $trans['phoneNumber']; | |
$payload['subscriptionAmount'] = $trans['amount']; | |
$payload['CustID'] = $trans['CustID']; | |
$payload['emailAddress'] = $trans['emailAddress']; | |
$payload['transactionRef'] = $trans['transaction_ref']; | |
$payload['channel'] = $trans['channel']; | |
//trigger subscription | |
// var_dump("got here for fund"); | |
$subscribe = container('mutualFundModel')->newFundSubscription($payload); | |
// var_dump("******************************************* subscription ***********************************************************"); | |
// var_dump($subscribe); | |
$message1 = "CustID: ". $payload['CustID']. ", BIZID: " . $payload['CAMID'] . ", FullName: " . $payload['fullName'] . ", Amount: " . $payload['subscriptionAmount'] . ", Email: " . $payload['emailAddress'] . ", Phone: " . $payload['phoneNumber']; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = "Reference: " . $payload['transactionRef'] . ", Code: 200, Message: " . $validate["message"] . " - " . $subscribe["message"] . " - Infoware Suspense Table ID: " . $subscribe["suspense table ID"] . " - Local Subscription Table ID: " . $subscribe["localdb ID"]; | |
$message4 = "Processing incomplete subscription process for " . $payload['fundCode']; | |
$message5 = "Subscription Successfully Processed.."; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
} | |
}elseif($trans['cash_account_id'] == EQF_01) | |
{ | |
// var_dump("got here for fund3"); | |
//check if subscritpion exist in local subscription table | |
$sub = container('mutualFundModel')->subscriptionTable() | |
->where([["transactionRef","=",$trans['transaction_ref']]]) | |
->first(); | |
// var_dump($trans['transaction_ref']); | |
// var_dump(count($sub)); | |
if(count($sub) == 0) | |
{ | |
//fetch fundCode | |
$fundCode = container('mutualFundModel')->getAFundCode($trans['cash_account_id']); | |
$fundCode = json_decode(json_encode($fundCode), true); | |
$payload['fundCode'] = $fundCode['fundCode']; | |
//fetch current fund price | |
$ress = container('mutualFundModel')->lastMutualFundtransactionPrice($payload['fundCode']); | |
$decodedRess = json_decode(json_encode($ress), true); | |
$payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
//prepare payload | |
$payload['CAMID'] = $trans['client_id']; | |
$payload['fullName'] = $trans['fullName']; | |
$payload['phoneNumber'] = $trans['phoneNumber']; | |
$payload['subscriptionAmount'] = $trans['amount']; | |
$payload['CustID'] = $trans['CustID']; | |
$payload['emailAddress'] = $trans['emailAddress']; | |
$payload['transactionRef'] = $trans['transaction_ref']; | |
$payload['channel'] = $trans['channel']; | |
//trigger subscription | |
// var_dump("got here for fund"); | |
$subscribe = container('mutualFundModel')->newFundSubscription($payload); | |
// var_dump("******************************************* subscription ***********************************************************"); | |
// var_dump($subscribe); | |
$message1 = "CustID: ". $payload['CustID']. ", BIZID: " . $payload['CAMID'] . ", FullName: " . $payload['fullName'] . ", Amount: " . $payload['subscriptionAmount'] . ", Email: " . $payload['emailAddress'] . ", Phone: " . $payload['phoneNumber']; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = "Reference: " . $payload['transactionRef'] . ", Code: 200, Message: " . $validate["message"] . " - " . $subscribe["message"] . " - Infoware Suspense Table ID: " . $subscribe["suspense table ID"] . " - Local Subscription Table ID: " . $subscribe["localdb ID"]; | |
$message4 = "Processing incomplete subscription process for " . $payload['fundCode']; | |
$message5 = "Subscription Successfully Processed.."; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
} | |
} | |
} | |
//fetch initialized transaction details from paystack transaction table | |
$transaction = $this->retrieveTransactionDetails(); | |
$transaction = json_decode(json_encode($transaction), true); | |
foreach($transaction as $trans) | |
{ | |
//check if Transaction time is older than 5 mins | |
$now = Carbon::now()->format('Y-m-d H:i:s'); | |
$tranCreated = Carbon::parse($trans["createdDate"]); | |
/* if($tranCreated->diffInMinutes($now) < 1){ | |
continue; | |
} */ | |
//validate payment | |
$transactionId = $trans['transaction_ref']; | |
$paystackRef = $trans['transaction_ref']; | |
$merchantId = PAYSTACK_ID; | |
// var_dump("******************************************* paystack table records ***********************************************************"); | |
// var_dump($trans); | |
$validate = container('PaystackGatewayModel')->postTransaction($transactionId, $paystackRef, $merchantId); | |
// var_dump("******************************************* cash posting to GL ***********************************************************"); | |
// var_dump($validate); | |
if ($validate && $validate['status'] === TRUE) | |
{ | |
// check if process is mutual fund then initiate subsription | |
if($trans['cash_account_id'] == FI10 || $trans['cash_account_id'] == EQF_01) | |
{ | |
//fetch fundCode | |
$fundCode = container('mutualFundModel')->getAFundCode($trans['cash_account_id']); | |
$fundCode = json_decode(json_encode($fundCode), true); | |
$payload['fundCode'] = $fundCode['fundCode']; | |
//fetch current fund price | |
$ress = container('mutualFundModel')->lastMutualFundtransactionPrice($payload['fundCode']); | |
$decodedRess = json_decode(json_encode($ress), true); | |
$payload['initiatedPrice'] = $decodedRess['BidPrice']; | |
//prepare payload | |
$payload['CAMID'] = $trans['client_id']; | |
$payload['fullName'] = $trans['fullName']; | |
$payload['phoneNumber'] = $trans['phoneNumber']; | |
$payload['subscriptionAmount'] = $trans['amount']; | |
$payload['CustID'] = $trans['CustID']; | |
$payload['emailAddress'] = $trans['emailAddress']; | |
$payload['transactionRef'] = $trans['transaction_ref']; | |
$payload['channel'] = $trans['channel']; | |
//trigger mutual fund subscription | |
$subscribe = container('mutualFundModel')->newFundSubscription($payload); | |
// var_dump("******************************************* subscription ***********************************************************"); | |
// var_dump($subscribe); | |
$message1 = "CustID: ". $payload['CustID']. ", BIZID: " . $payload['CAMID'] . ", FullName: " . $payload['fullName'] . ", Amount: " . $payload['subscriptionAmount'] . ", Email: " . $payload['emailAddress'] . ", Phone: " . $payload['phoneNumber']; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = "Reference: " . $payload['transactionRef'] . ", Code: 200, Message: " . $validate["message"] . " - " . $subscribe["message"] . " - Infoware Suspense Table ID: " . $subscribe["suspense table ID"] . " - Local Subscription Table ID: " . $subscribe["localdb ID"]; | |
$message4 = "Initialized Paystack Process Completed for" . $payload['fundCode']; | |
$message5 = "Unprocessed Mutual Fund paystack payment Successful treated.."; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
}elseif($trans['cash_account_id'] == VOUCHER_CAM || $trans['cash_account_id'] == VOUCHER_CSS) | |
{ // check if process is voucher purchase and send voucher code via email | |
//prepare payload | |
$voucher = $this->voucherTable()->where([["transactionID","=",$trans['transaction_ref']]])->first(); | |
$voucher = json_decode(json_encode($voucher), true); | |
//fetch compay name | |
$voucher['company'] = $trans['companyName']; | |
//Send email | |
(new Mailer()) | |
->to($voucher["recipientEmailAddress"]) | |
// ->bcc($voucher["accountOfficerEmail"]) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Gift Voucher Notification") | |
->usingView('gift_voucher', $voucher) | |
->send(); | |
// var_dump("******************************************* Voucher **********************************************************"); | |
$message1 = "CustID: ". $trans['CustID'].", Voucher purhcase by " . $voucher['senderFullName'] . " for " . $voucher['recipientFullName']; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = $message3 = "Reference: " . $trans['transaction_ref'] . ", Code: 200, Voucher Value: ". $voucher['voucherValue'] . ", Voucher Code: ". $voucher['voucherCode'] .", Recipient Email Address: " . $voucher['recipientEmailAddress'] . ", Recipient Phone: " . $voucher['recipientPhoneNumber']; | |
$message4 = "Voucher Successfully Sent via Email"; | |
$message5 = "Gift Voucher Service from ". $voucher['company']; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
}elseif($trans['cash_account_id'] == VALUATION_STATEMENT_FEE_CAM || $trans['cash_account_id'] == VALUATION_STATEMENT_FEE_CSS) | |
{ | |
//prepare payload | |
// $filename = $trans['transaction_ref'].".pdf"; | |
$filename = $trans['transaction_ref']; | |
$directory = dirname(__DIR__, 2) . "/public_view/files/valuation_report/"; | |
$valuation['fullName'] = $trans['fullName']; | |
$valuation['CustID'] = $trans['CustID']; | |
$valuation['emailAddress'] = $trans['emailAddress']; | |
// $valuation['report'] = env('IMAGE_URL')."valuation_report/{$filename}"; | |
$valuation['report1'] = env('IMAGE_URL')."valuation_report/{$filename}_1.pdf"; | |
// $file_pointer = '/user01/work/gfg.txt'; | |
$file_pointer = $directory."{$filename}_2.pdf"; | |
if (file_exists($file_pointer)) | |
{ | |
$valuation['count'] = 2; | |
$valuation['report2'] = env('IMAGE_URL')."valuation_report/{$filename}_2.pdf"; | |
} | |
$valuation['company'] = $trans['companyName']; | |
//send email | |
(new Mailer()) | |
->to($valuation['emailAddress']) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Valuation Statement Notification") | |
->usingView('valuation_report', $valuation) | |
->send(); | |
// var_dump("******************************************* Valuation ***********************************************************"); | |
$message1 = "CustID: ". $trans['CustID']. ", BIZID: " . $trans['client_id'] . ", FullName: " . $trans['fullName'] ; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = "Reference: " . $trans['transaction_ref'] . ", Code: 200, Message: " . $validate["message"] ; | |
$message4 = "Valuation Statement Successfully Sent via Email"; | |
$message5 = "Valutaion Statemement Service from ". $valuation['company']; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
} | |
$message1 = "CustID: ". $trans['CustID']. ", BIZID: " . $trans['client_id'] . ", FullName: " . $trans['fullName'] . ", Amount: " . $trans['amount'] . ", Email: " . $trans['emailAddress'] . ", Phone: " . $trans['phoneNumber']; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = "Reference: " . $trans['transaction_ref'] . ", Code: 200, Status: ". $validate['message']; | |
$message4 = "Initialized Paystack Process Completed"; | |
$message5 = "Cron Job for Paystack Payment Successful..."; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
}else{ | |
//log event | |
$message1 = "CustID: ". $trans['CustID']. ", BIZID: " . $trans['client_id'] . ", FullName: " . $trans['fullName'] . ", Amount: " . $trans['amount'] . ", Email: " . $trans['emailAddress'] . ", Phone: " . $trans['phoneNumber']; | |
$message2 = "Cron job call from ip address: ". $payload['ipaddress']; | |
$message3 = "Reference: " . $trans['transaction_ref'] . ", Code: 400, Status: Payment Failed"; | |
$message4 = "Initialized Paystack Process Unsuccessful"; | |
$message5 = "Unprocessed Paystack Payment Failed.."; | |
$log = $this->activity_log($message1,$message2,$message3,$message4,$message5); | |
} | |
} | |
return ["code" => 200, "message" => "Paystack Recovery Webhook Successfully Processed"]; | |
}elseif($payload['webhookType'] == "customerIdentification") | |
{ | |
//update nuban table with verified ID type and value | |
$update = $this->nubanTable() | |
->where([["customerCode", "=", $payload['customerCode']], | |
["idType", "=", null], | |
["idValue", "=", null], | |
]) | |
->update([ | |
'idType' => $payload['idType'], | |
'idValue' => $payload['idValue'], | |
]); | |
//fetch CustID from NUBAN table | |
$nuban = $this->getNubanforWebhook_1($payload); | |
if(count($nuban) > 0) | |
{ | |
$decodedNuban = json_decode(json_encode($nuban), true); | |
$payload += $decodedNuban; | |
//proceed to create customer nuban account | |
$create = $this->createNubanAccount($payload); | |
return $data = ["message" => "Customer Verification Update Successful", "code" => 200]; | |
}else{ | |
return $data = ["message" => "Customer Verification Update Failed", "code" => 400]; | |
} | |
}elseif($payload['webhookType'] == "transfer") | |
{ | |
//Notify FINCON and RICA of payment failure | |
$msg = "Wallet Transfer Failure - " .$payload["accountName"] . ", " .$payload["accountNumber"] . ", " .$payload["bankName"] . ", N" .$payload["amount"] . ", " .$payload["transferCode"] . ", " .$payload["recipientCode"] . ", " .$payload["reason"]; | |
$record = [ | |
"accountName" => $payload["accountName"], | |
"accountNumber" => $payload["accountNumber"], | |
"bankName" => $payload["bankName"], | |
"amount" => $payload["amount"], | |
"transferCode" => $payload["transferCode"], | |
"recipientCode" =>$payload["recipientCode"], | |
"business" => "CAM", | |
"reason" => $payload['reason'], | |
]; | |
(new Mailer()) | |
->to(\getenv("FINCON-EMAIL")) | |
->cc(\getenv("RICA-EMAIL")) | |
->from(\getenv("NOREPLY_MAIL"), 'CardinalStone') | |
->subject("Failed Wallet Payout - Client Wallet Already Debited") | |
->usingView('failed_wallet_transfer_notification', $record) | |
->send(); | |
return $data = ["message" => "Successfully notified FINCON and RICA", "code" => 200]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment