Created
March 15, 2024 09:39
-
-
Save adejorosam/8612bc99bac0d5272eaa489423a40211 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
$app->post('/api/paystackWebhook', function ($request, $response) { | |
//check originating IP Address | |
if($_SERVER['REMOTE_ADDR'] != "52.31.139.75" && $_SERVER['REMOTE_ADDR'] != "52.49.173.169" && $_SERVER['REMOTE_ADDR'] != "52.214.14.220") | |
{ | |
//check if cal is from cardinalstone server | |
if($_SERVER['REMOTE_ADDR'] != "167.99.109.180") | |
{ | |
//log event | |
$message1 = "Customer Code Not Retrieved"; | |
$message2 = "Bank Account Number Not Retrieved"; | |
$message3 = "Amount and Bank Not Retrieved"; | |
$message4 = "Unknown Originating IP Address"; | |
$message5 = "Webhook Call from: " . $_SERVER['REMOTE_ADDR']; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(400); | |
return $response | |
->withStatus(400) | |
->withJson(["message" => "Not Allowed"]); | |
} | |
else{ | |
//log event | |
$message1 = "Customer Code Not Retrieved"; | |
$message2 = "Bank Account Number Not Retrieved"; | |
$message3 = "Amount and Bank Not Retrieved"; | |
$message4 = "Internal Originating IP Address"; | |
$message5 = "Internal Call from: " . $_SERVER['REMOTE_ADDR']; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
//ldap authentication | |
$url = BASE_URL . "/api/authenticate"; | |
$options = [ | |
'json' => [ | |
"username" => VIRTUAL_ACCOUNT_USER, | |
"password" => VIRTUAL_ACCOUNT_PASSWORD, | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
//call webhook login | |
$url = BASE_URL . "/api/mutualfund/webhookLogin"; | |
$options = [ | |
'headers' => [ | |
'Authorization' => $res->accessToken, | |
], | |
'json' => [ | |
"webhookType" => "paystack_recovery", | |
"ipaddress" => $_SERVER['REMOTE_ADDR'], | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
} | |
}else{ | |
// only a post with paystack signature header gets our attention | |
$input = @file_get_contents("php://input"); | |
$event = json_decode($input); | |
$events = $event->event; | |
if($events == "customeridentification.success" || $events == "customeridentification.failed") | |
{ | |
$customerCode1 = $event->data->customer_code; | |
$reference = $event->data->email; | |
}elseif($events == "charge.success" || $events == "charge.failed") | |
{ | |
$customerCode1 = $event->data->customer->customer_code . " - " .$event->data->customer->first_name . " - " .$event->data->customer->last_name; | |
$reference = $event->data->reference; | |
} | |
elseif($events == "transfer.success" || $events == "transfer.failed") | |
{ | |
$reference = $event->data->reference; | |
$customerCode1 = $event->data->recipient->recipient_code . " - " .$event->data->transfer_code . " - " .$event->data->recipient->details->account_name . " - " .$event->data->recipient->details->account_number . " - " .$event->data->recipient->details->bank_name . " - " .$event->data->amount/100; | |
} | |
$channel = $event->data->authorization->channel; | |
//general webhook event logged | |
// $message1 = "Event: " . $events . ", Customer Code: " . $customerCode1 ." or ".$customerCode2 ; | |
$message1 = "Event: " . $events . ", Customer: " . $customerCode1 . ", Reference: " . $reference; | |
$message2 = "This is an Intro log of Paystack webhook trigger"; | |
$message3 = "Paystack Event triggered at ". Carbon::now()->format('Y-m-d H:i:s') ; | |
$message4 = "Proceeding to anaylze event"; | |
$message5 = "Paystack Event logged"; | |
//--- $log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
// $customerCode = "CUS_t8asm21whvf6wht"; | |
// $virtualAccountNumber = "7251694835"; | |
// $amount = "25000"; | |
// $bank = "Wema Bank"; | |
// $reference = "MF0235775734226"; | |
if ($events == "charge.success" && $channel == "dedicated_nuban") //process nuban payment | |
{ | |
$customerCode = $event->data->customer->customer_code; | |
$virtualAccountNumber = $event->data->authorization->receiver_bank_account_number; | |
$accountName = $event->data->customer->last_name ." " . $event->data->customer->first_name; | |
$email = $event->data->customer->email; | |
$phone = $event->data->customer->phone; | |
$amount = $event->data->amount/100; | |
$bank = $event->data->authorization->receiver_bank; | |
$channel = $event->data->authorization->channel; | |
$senderName = $event->data->authorization->sender_name; | |
$senderAccount = $event->data->authorization->sender_bank_account_number; | |
$senderBank = $event->data->authorization->sender_bank; | |
$reference = $event->data->reference; | |
//log event | |
$message1 = "Customer Code: ". $customerCode. ", Account Name: " . $accountName . ", Bank Account Number: " . $virtualAccountNumber . ", Amount: " . $amount . ", Bank: " .$bank .", Email: " . $email . ", Phone: " . $phone; | |
$message2 = "Sender Name: " . $senderName . ", Sender Account Number: " . $senderAccount . ", Sender Bank: " .$senderBank; | |
$message3 = "Paystack Signature Verified and Recognized originating IP: " . $_SERVER['REMOTE_ADDR']; | |
$message4 = "Reference: " . $reference . ", Event: " . $events; | |
$message5 = "Virtual Account Payment Initiated via " . $channel; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
//ldap authentication | |
$url = BASE_URL . "/api/authenticate"; | |
// $url = BASE_URL . "/api/findCustomerByName"; | |
$options = [ | |
'json' => [ | |
"username" => VIRTUAL_ACCOUNT_USER, | |
// "username" => "1196", | |
"password" => VIRTUAL_ACCOUNT_PASSWORD, | |
// "password" => "123456", | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
//call webhook login | |
$url = BASE_URL . "/api/mutualfund/webhookLogin"; | |
$options = [ | |
'headers' => [ | |
'Authorization' => $res->accessToken, | |
], | |
'json' => [ | |
"customerCode" => $customerCode, | |
"virtualAccountNumber" => $virtualAccountNumber, | |
"amount" => $amount, | |
"bank" => $bank, | |
"senderName" => $senderName, | |
"senderAccount" => $senderAccount, | |
"senderBank" => $senderBank, | |
"reference" => $reference, | |
"ipaddress" => $_SERVER['REMOTE_ADDR'], | |
"webhookType" => "nubanPayment", | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
if($res->code == 200) | |
{ | |
//log event | |
$message1 = "Customer Code: ". $customerCode. ", Account Name: " . $accountName . ", Bank Account Number: " . $virtualAccountNumber . ", Amount: " . $amount . ", Bank: " .$bank .", Email: " . $email . ", Phone: " . $phone; | |
$message2 = "Sender Name: " . $senderName . ", Sender Account Number: " . $senderAccount . ", Sender Bank: " .$senderBank; | |
$message3 = "Reference: " . $reference . ", Code: ". $res->code . ", Status: ". $res->message; | |
$message4 = "Process Completed"; | |
$message5 = "Virtual Account Processing Successful"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
}else{ | |
//log event | |
$message1 = "Customer Code: ". $customerCode. ", Account Name: " . $accountName . ", Bank Account Number: " . $virtualAccountNumber . ", Amount: " . $amount . ", Bank: " .$bank .", Email: " . $email . ", Phone: " . $phone; | |
$message2 = "Sender Name: " . $senderName . ", Sender Account Number: " . $senderAccount . ", Sender Bank: " .$senderBank; | |
$message3 = "Reference: " . $reference . ", Code: ". $res->code . ", Status: ". $res->message; | |
$message4 = "Process Completed"; | |
$message5 = "Virtual Account Processing Failed"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
/* http_response_code(200); | |
return $response | |
->withStatus(200); */ | |
// ->withJson(["message" => "Transaction Completed"]); | |
} | |
}elseif($events == "charge.success" && $channel == "dedicated_nub") { | |
//to automate all payment e.g mutual funds subscription via portal using webhook, remove && $channel == "dedicated_nuba" | |
//and process subscription via webhook login. For now use && $channel == "dedicated_nuba" to hold this spot | |
/* { | |
"event":"charge.success", | |
"data": { | |
"id":302961, | |
"domain":"live", | |
"status":"success", | |
"reference":"qTPrJoy9Bx", | |
"amount":10000, | |
"message":null, | |
"gateway_response":"Approved by Financial Institution", | |
"paid_at":"2016-09-30T21:10:19.000Z", | |
"created_at":"2016-09-30T21:09:56.000Z", | |
"channel":"card", | |
"currency":"NGN", | |
"ip_address":"41.242.49.37", | |
"metadata":0, | |
"log":{ | |
"time_spent":16, | |
"attempts":1, | |
"authentication":"pin", | |
"errors":0, | |
"success":false, | |
"mobile":false, | |
"input":[], | |
"channel":null, | |
"history":[ | |
{ | |
"type":"input", | |
"message":"Filled these fields: card number, card expiry, card cvv", | |
"time":15 | |
}, | |
{ | |
"type":"action", | |
"message":"Attempted to pay", | |
"time":15 | |
}, | |
{ | |
"type":"auth", | |
"message":"Authentication Required: pin", | |
"time":16 | |
} | |
] | |
}, | |
"fees":null, | |
"customer":{ | |
"id":68324, | |
"first_name":"BoJack", | |
"last_name":"Horseman", | |
"email":"bojack@horseman.com", | |
"customer_code":"CUS_qo38as2hpsgk2r0", | |
"phone":null, | |
"metadata":null, | |
"risk_action":"default" | |
}, | |
"authorization":{ | |
"authorization_code":"AUTH_f5rnfq9p", | |
"bin":"539999", | |
"last4":"8877", | |
"exp_month":"08", | |
"exp_year":"2020", | |
"card_type":"mastercard DEBIT", | |
"bank":"Guaranty Trust Bank", | |
"country_code":"NG", | |
"brand":"mastercard", | |
"account_name": "BoJack Horseman" | |
}, | |
"plan":{} | |
} | |
} */ | |
$customerCode = $event->data->customer->customer_code; | |
$accountName = $event->data->customer->last_name ." " . $event->data->customer->first_name; | |
$email = $event->data->customer->email; | |
$phone = $event->data->customer->phone; | |
$amount = $event->data->amount/100; | |
$ipaddress = $event->data->ip_address; | |
$bank = $event->data->authorization->bank; | |
$channel = $event->data->channel; | |
$card_type = $event->data->authorization->card_type; | |
$card_name = $event->data->authorization->account_name; | |
$exp_month = $event->data->authorization->exp_month; | |
$exp_year = $event->data->authorization->exp_year; | |
$last4 = $event->data->authorization->last4; | |
$brand = $event->data->authorization->brand; | |
$card_details = $card_name ."-" .$card_type ."-" .$last4 ."-" .$brand; | |
$bankAccount = $event->data->authorization->sender_bank_account_number; | |
$reference = $event->data->reference; | |
//log event | |
$message1 = "Customer Code: ". $customerCode. ", Account Name: " . $accountName . ", Bank Account Number: " . $bankAccount . ", Amount: " . $amount . ", Bank: " .$bank .", Email: " . $email . ", Phone: " . $phone; | |
$message2 = "Reference: " . $reference . ", Event: " . $events . ", Card Details: " . $card_details. " from ip address: ". $ipaddress; | |
$message3 = "Paystack Signature Verified and Recognized originating IP: " . $_SERVER['REMOTE_ADDR']; | |
$message4 = "Paystack Payment Initiated via " . $channel; | |
$message5 = "Non dedicated_nuban payments to handle incomplete payments on portal"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
//ldap authentication | |
$url = BASE_URL . "/api/authenticate"; | |
$options = [ | |
'json' => [ | |
"username" => VIRTUAL_ACCOUNT_USER, | |
"password" => VIRTUAL_ACCOUNT_PASSWORD, | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
//call webhook login | |
$url = BASE_URL . "/api/mutualfund/webhookLogin"; | |
$options = [ | |
'headers' => [ | |
'Authorization' => $res->accessToken, | |
], | |
'json' => [ | |
"customerCode" => $customerCode, | |
"bankAccount" => $bankAccount, | |
"amount" => $amount, | |
"bank" => $bank, | |
"card_details" => $card_details, | |
"accountName" => $accountName, | |
"email" => $email, | |
"phone" => $phone, | |
"ipaddress" => $ipaddress, | |
"reference" => $reference, | |
"events" => $events, | |
"webhookType" => "paystack", | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
if($res->code == 200) | |
{ | |
//log event | |
$message1 = "Customer Code: ". $customerCode. ", Account Name: " . $accountName . ", Bank Account Number: " . $bankAccount . ", Amount: " . $amount . ", Bank: " .$bank .", Email: " . $email . ", Phone: " . $phone; | |
$message2 = "Reference: " . $reference . ", Event: " . $events . ", Card Details: " . $card_details. " from ip address: ". $ipaddress; | |
$message3 = "Reference: " . $reference . ", Code: ". $res->code . ", Message: ". $res->message; | |
$message4 = "Process Completed"; | |
$message5 = "Non dedicated_nuban payments Successful."; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
}else{ | |
//log event | |
$message1 = "Customer Code: ". $customerCode. ", Account Name: " . $accountName . ", Bank Account Number: " . $bankAccount . ", Amount: " . $amount . ", Bank: " .$bank .", Email: " . $email . ", Phone: " . $phone; | |
$message2 = "Reference: " . $reference . ", Event: " . $events . ", Card Details: " . $card_details. " from ip address: ". $ipaddress; | |
$message3 = "Reference: " . $reference . ", Code: ". $res->code . ", Message: ". $res->message; | |
$message4 = "Process Not Completed"; | |
$message5 = "Non dedicated_nuban payments Failed."; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
/* http_response_code(200); | |
return $response | |
->withStatus(200); */ | |
// ->withJson(["message" => "Transaction Completed"]); | |
} | |
}elseif ($events == "customeridentification.success" ){ //Process Successful Customer Identification | |
/* { | |
"event": "customeridentification.success", | |
"data": { | |
"customer_id": "9387490384", | |
"customer_code": "CUS_xnxdt6s1zg1f4nx", | |
"email": "bojack@horsinaround.com", | |
"identification": { | |
"country": "NG", | |
"type": "bvn", | |
"value": "200*****677" | |
} | |
} | |
}*/ | |
$customerCode = $event->data->customer_code; | |
$email = $event->data->email; | |
$type = $event->data->identification->type; | |
$value = $event->data->identification->value; | |
$account_number = $event->data->identification->account_number; | |
$bvn = $event->data->identification->bvn; | |
$bank_code = $event->data->identification->bank_code; | |
//log event | |
$message1 = "Customer Code: ". $customerCode; | |
$message2 = "Event: ". $events . ", ID Type: ". $type; | |
$message3 = "account_number: ". $account_number . ", BVN: ". $bvn . ", bank_code: ". $bank_code; | |
$message4 = "Customer Verification Status Notification"; | |
$message5 = "Proceed to Update Customer Verification"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
//ldap authentication | |
$url = BASE_URL . "/api/authenticate"; | |
$options = [ | |
'json' => [ | |
"username" => VIRTUAL_ACCOUNT_USER, | |
"password" => VIRTUAL_ACCOUNT_PASSWORD, | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
//call webhook login | |
$url = BASE_URL . "/api/mutualfund/webhookLogin"; | |
$options = [ | |
'headers' => [ | |
'Authorization' => $res->accessToken, | |
], | |
'json' => [ | |
"customerCode" => $customerCode, | |
"email" => $email, | |
"idType" => $type, | |
"idValue" => $value, | |
"webhookType" => "customerIdentification", | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
if($res->code == 200) | |
{ | |
//log event | |
$message1 = "Customer Code: ". $customerCode; | |
$message2 = "Event: ". $events . ", ID Type: ". $type; | |
$message3 = "account_number: ". $account_number . ", BVN: ". $bvn . ", bank_code: ". $bank_code; | |
$message4 = "Customer Verification Status Notification"; | |
$message5 = "Customer Verification Successful"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
}else{ | |
//log event | |
$message1 = "Customer Code: ". $customerCode; | |
$message2 = "Event: ". $events . ", ID Type: ". $type; | |
$message3 = "account_number: ". $account_number . ", BVN: ". $bvn . ", bank_code: ". $bank_code; | |
$message4 = "Customer Verification Status Notification"; | |
$message5 = "Customer Verification Failed"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
/* http_response_code(200); | |
return $response | |
->withStatus(200); */ | |
// ->withJson(["message" => "Transaction Completed"]); | |
} | |
}elseif ($events == "customeridentification.failed" ){ //Process Failed Customer Identification | |
/* { | |
"event": "customeridentification.failed", | |
"data": { | |
"customer_id": "9387490384", | |
"customer_code": "CUS_xnxdt6s1zg1f4nx", | |
"email": "bojack@horsinaround.com", | |
"identification": { | |
"country": "NG", | |
"type": "bvn", | |
"value": "200*****677" | |
} | |
} | |
}*/ | |
$customerCode = $event->data->customer_code; | |
$email = $event->data->email; | |
$type = $event->data->identification->type; | |
$value = $event->data->identification->value; | |
$account_number = $event->data->identification->account_number; | |
$bvn = $event->data->identification->bvn; | |
$bank_code = $event->data->identification->bank_code; | |
//log event | |
$message1 = "Customer Code111: ". $customerCode; | |
$message2 = $event->data->reason; | |
$message3 = "account_number: ". $account_number . ", BVN: ". $bvn . ", bank_code: ". $bank_code; | |
$message4 = "Customer Verification Status Notification"; | |
$message5 = "Customer Verification Failed". $event->data->reason; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
}elseif ($events == "transfer.failed" ){ | |
/* { | |
"event": "transfer.failed", | |
"data": { | |
"amount": 200000, | |
"currency": "NGN", | |
"domain": "test", | |
"failures": null, | |
"id": 69123462, | |
"integration": { | |
"id": 100043, | |
"is_live": true, | |
"business_name": "Paystack" | |
}, | |
"reason": "Enjoy", | |
"reference": "1976435206", | |
"source": "balance", | |
"source_details": null, | |
"status": "failed", | |
"titan_code": null, | |
"transfer_code": "TRF_chs98y5rykjb47w", | |
"transferred_at": null, | |
"recipient": { | |
"active": true, | |
"currency": "NGN", | |
"description": null, | |
"domain": "test", | |
"email": "test@email.com", | |
"id": 13584206, | |
"integration": 100043, | |
"metadata": null, | |
"name": "Ted Lasso", | |
"recipient_code": "RCP_cjcua8itre45gs", | |
"type": "nuban", | |
"is_deleted": false, | |
"details": { | |
"authorization_code": null, | |
"account_number": "0123456789", | |
"account_name": "Ted Lasso", | |
"bank_code": "011", | |
"bank_name": "First Bank of Nigeria" | |
}, | |
"created_at": "2021-04-12T15:30:14.000Z", | |
"updated_at": "2021-04-12T15:30:14.000Z" | |
}, | |
"session": { | |
"provider": "nip", | |
"id": "74849400998877667" | |
}, | |
"created_at": "2021-04-12T15:30:15.000Z", | |
"updated_at": "2021-04-12T15:41:21.000Z" | |
} | |
}*/ | |
$recipientCode = $event->data->recipient->recipient_code; | |
$accountName = $event->data->recipient->details->account_name; | |
$accountNumber = $event->data->recipient->details->account_number; | |
$bankName = $event->data->recipient->details->bank_name; | |
$amount = $event->data->amount/100; | |
$transferCode = $event->data->transfer_code; | |
$reason = $event->data->reason; | |
//log event | |
$message1 = "Recipient Code: ". $recipientCode; | |
$message2 = "Account Name: ". $accountName .", Account Number: ". $accountNumber .", " .", Bank Name: ". $bankName; | |
$message3 = "Amount". $amount . ", Transfer Code " . $transferCode ; | |
$message4 = "Reason " . $reason; | |
$message5 = "Proceed to notify FINCON and RICA"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
//ldap authentication | |
$url = BASE_URL . "/api/authenticate"; | |
$options = [ | |
'json' => [ | |
"username" => VIRTUAL_ACCOUNT_USER, | |
"password" => VIRTUAL_ACCOUNT_PASSWORD, | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
//call webhook login | |
$url = BASE_URL . "/api/mutualfund/webhookLogin"; | |
$options = [ | |
'headers' => [ | |
'Authorization' => $res->accessToken, | |
], | |
'json' => [ | |
"recipientCode" => $recipientCode, | |
"accountName" => $accountName, | |
"accountNumber" => $accountNumber, | |
"bankName" => $bankName, | |
"amount" => $amount, | |
"transferCode" => $transferCode, | |
"reason" => $reason, | |
"webhookType" => "transfer", | |
] | |
]; | |
try { | |
$response = $this->guzzle->post("{$url}", $options); | |
} catch (\GuzzleHttp\Exception\RequestException $e) { | |
if ($e->hasResponse()) { | |
$response = $e->getResponse(); | |
} | |
} | |
$res = json_decode($response->getBody()); | |
if($res->code == 200) | |
{ | |
//log event | |
$message1 = "Recipient Code: ". $recipientCode; | |
$message2 = "Account Name: ". $accountName .", Account Number: ". $accountNumber .", " .", Bank Name: ". $bankName; | |
$message3 = "Amount". $amount . ", Transfer Code " . $transferCode ; | |
$message4 = "Reason " . $reason; | |
$message5 = "Successfully notified FINCON and RICA"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
}else{ | |
//log event | |
$message1 = "Recipient Code: ". $recipientCode; | |
$message2 = "Account Name: ". $accountName .", Account Number: ". $accountNumber .", " .", Bank Name: ". $bankName; | |
$message3 = "Amount". $amount . ", Transfer Code " . $transferCode ; | |
$message4 = "Reason " . $reason; | |
$message5 = "Failed to notify FINCON and RICA"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
/* http_response_code(200); | |
return $response | |
->withStatus(200); */ | |
// ->withJson(["message" => "Transaction Completed"]); | |
} | |
}elseif ($events == "transfer.success" ){ | |
/* { | |
"event": "transfer.success", | |
"data": { | |
"amount": 30000, | |
"currency": "NGN", | |
"domain": "test", | |
"failures": null, | |
"id": 37272792, | |
"integration": { | |
"id": 463433, | |
"is_live": true, | |
"business_name": "Boom Boom Industries NG" | |
}, | |
"reason": "Have fun...", | |
"reference": "1jhbs3ozmen0k7y5efmw", | |
"source": "balance", | |
"source_details": null, | |
"status": "success", | |
"titan_code": null, | |
"transfer_code": "TRF_wpl1dem4967avzm", | |
"transferred_at": null, | |
"recipient": { | |
"active": true, | |
"currency": "NGN", | |
"description": "", | |
"domain": "test", | |
"email": null, | |
"id": 8690817, | |
"integration": 463433, | |
"metadata": null, | |
"name": "Jack Sparrow", | |
"recipient_code": "RCP_a8wkxiychzdzfgs", | |
"type": "nuban", | |
"is_deleted": false, | |
"details": { | |
"account_number": "0000000000", | |
"account_name": null, | |
"bank_code": "011", | |
"bank_name": "First Bank of Nigeria" | |
}, | |
"created_at": "2020-09-03T12:11:25.000Z", | |
"updated_at": "2020-09-03T12:11:25.000Z" | |
}, | |
"session": { "provider": null, "id": null }, | |
"created_at": "2020-10-26T12:28:57.000Z", | |
"updated_at": "2020-10-26T12:28:57.000Z" | |
} | |
}*/ | |
$recipientCode = $event->data->recipient->recipient_code; | |
$accountName = $event->data->recipient->details->account_name; | |
$accountNumber = $event->data->recipient->details->account_number; | |
$bankName = $event->data->recipient->details->bank_name; | |
$amount = $event->data->amount/100; | |
$transferCode = $event->data->transfer_code; | |
$reason = $event->data->reason; | |
//log event | |
$message1 = "Recipient Code: ". $recipientCode; | |
$message2 = "Account Name: ". $accountName .", Account Number: ". $accountNumber .", " .", Bank Name: ". $bankName; | |
$message3 = "Amount ". $amount . ", Transfer Code " . $transferCode ; | |
$message4 = "Reason " . $reason; | |
$message5 = "Transfer successful"; | |
$log = $this->mutualFundModel->activity_log($message1,$message2,$message3,$message4,$message5); | |
http_response_code(200); | |
return $response | |
->withStatus(200); | |
// ->withJson(["message" => "Transaction Completed"]); | |
} | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment