Skip to content

Instantly share code, notes, and snippets.

@adejorosam
Created March 15, 2024 09:35
Show Gist options
  • Save adejorosam/c67c11eb14e0e2ebc639433c0ce86da3 to your computer and use it in GitHub Desktop.
Save adejorosam/c67c11eb14e0e2ebc639433c0ce86da3 to your computer and use it in GitHub Desktop.
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