refactored Mpamba Controller, added wallet tables

This commit is contained in:
Kwesi Banson Jnr
2025-11-26 21:45:45 +00:00
parent 094efd008e
commit 1e18492dc2
19 changed files with 466 additions and 38 deletions

View File

@@ -8,6 +8,7 @@ use App\Models;
use App\Library\AirtelMoneyMw;
use Carbon\Carbon;
use Config;
use Storage;
class AirtelMoneyMalawiController extends Controller
{
@@ -37,41 +38,38 @@ class AirtelMoneyMalawiController extends Controller
"id" => $request->refID //time() . uniqid()
]
];
//country, currency, msisdn,
// $subscriber_country = $data['subscriber']['country'];
// $subscriber_currency = $data['subscriber']['currency'];
// $subscriber_msisdn = $data['subscriber']['msisdn'];
$filename = "requests_" . date("Y-m-d") . ".txt";
$logdata = date("Y-m-d H:i:s") . " - " . json_encode($request->all());
Storage::disk('airtelmoney')->append($filename, $logdata);
// $transaction_amount = $data['transaction']['amount'];
// $transaction_country = $data['transaction']['country'];
// $transaction_currency = $data['transaction']['currency'];
// $transaction_id = $data['transaction']['id'];
$wallet = Models\AirtelMoneyWallet::where('name', $request->wallet_id)->first();
if ($wallet == false) {
// code...
return response()->json(['code' => 3, 'msg' => 'Wallet Not found']);
}
#$authURL = "https://openapiuat.airtel.africa/auth/oauth2/token";
$authURL = Config('airtelmoney.authURL');
$authURL = "https://openapiuat.airtel.africa/auth/oauth2/token";
//no comments
//CONTINENTAL CAPITAL
$clientID = "9ff18a6d-331e-4ec5-9ecc-4e512e13747c";
$clientSecret = "40f44254-10e7-4eb8-b161-38125117f4ba";
$result = $this->authenticate($authURL, $clientID, $clientSecret);
$result = $this->authenticate($authURL, $wallet->clientID, $wallet->clientSecret);
if($result['success']){
$bearerToken = $result['token'];
//send a ussd push
$retval = $this->sendUSSDPush($bearerToken, $request_data);
$filename = "ussd_push_responses_" . date("Y-m-d") . ".txt";
$logdata = date("Y-m-d H:i:s") . " - " . json_encode($retval);
Storage::disk('airtelmoney')->append($filename, $logdata);
$result_data = json_decode($retval, true);
// dump($result_data);
// Check if the response has a status and success flag
if (isset($result_data['status']['success']) && $result_data['status']['success'] === true) {
// Success case
$transactionId = $result_data['data']['transaction']['id'];
$transactionStatus = $result_data['data']['transaction']['status'];
$message = $result_data['status']['message'];
$msg = "Transaction Successful!\n";
$msg = "Transaction Successful!\n";
$msg .= "Transaction ID: $transactionId\n";
$msg .= "Status: $transactionStatus\n";
$msg .= "Message: $message\n";
@@ -81,7 +79,7 @@ class AirtelMoneyMalawiController extends Controller
$errorCode = $result_data['status']['result_code'] ?? 'N/A';
$errorMessage = $result_data['status']['message'] ?? 'Unknown error';
$msg = "Transaction Failed!\n";
$msg = "Transaction Failed!\n";
$msg .= "Error Code: $errorCode\n";
$msg .= "Message: $errorMessage\n";
return response()->json(['code' => 3, 'msg' => $msg, 'responseRaw' => $result_data ]);
@@ -271,25 +269,23 @@ class AirtelMoneyMalawiController extends Controller
];
}
// Get HTTP status code
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Decode JSON response
$result = json_decode($response, true);
// Check if token is present
if ($httpCode === 200 && isset($result['access_token'])) {
return [
'success' => true,
'token' => $result['access_token']
];
} else {
}
else {
return [
'success' => false,
'error' => $result['error_description'] ?? 'Unknown error',
'error' => $result, // $result['error_description'] ?? 'Unknown error',
'details' => $result['error'] ?? []
];
}
}
}
}