$invoiceNumber, "amount" => (int)$amount, "msisdn" => $msisdn, "description" => $description ]; // Initialize cURL $ch = curl_init($url); // Set cURL options curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $token, "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // Execute request $response = curl_exec($ch); // Check for cURL errors if (curl_errno($ch)) { echo "cURL Error: " . curl_error($ch); curl_close($ch); return false; } // Close connection curl_close($ch); // Decode and return response return json_decode($response, true); } public function changePassword($baseURL, $token,$newPassword, $newPasswordConfirmation) { // Endpoint URL $url = rtrim($baseURL, "/") . "/password"; // Prepare data $data = [ "new_password" => $newPassword, "new_password_confirmation" => $newPasswordConfirmation ]; // Initialize cURL $ch = curl_init($url); // Set cURL options curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH"); // PATCH request curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $token, "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // Execute and capture response $response = curl_exec($ch); // Check for errors if (curl_errno($ch)) { echo "cURL Error: " . curl_error($ch); curl_close($ch); return false; } // Close connection curl_close($ch); // Decode JSON response return json_decode($response, true); } public function validate_msisdn($baseURL, $msisdn, $bearerToken){ // Ensure proper endpoint format $url = rtrim($baseURL, '/') . '/payments/validate/' . urlencode($msisdn); // Initialize cURL $ch = curl_init($url); // Set cURL options curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPGET, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer ' . $bearerToken, 'Accept: application/json' ]); // Execute the request $response = curl_exec($ch); // Handle cURL error if (curl_errno($ch)) { curl_close($ch); return [ 'success' => false, 'error' => 'Curl error: ' . curl_error($ch) ]; } // Get HTTP status code $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); // Decode JSON response $result = json_decode($response, true); if ($httpCode === 200 && isset($result['data']['full_name'])) { return [ 'success' => true, 'full_name' => $result['data']['full_name'] ]; } else { return [ 'success' => false, 'error' => $result['message'] ?? 'Unknown error', 'details' => $result['errors'] ?? [] ]; } } public function authenticate($baseURL, $wallet, $password){ // Endpoint URL $url = rtrim($baseURL, '/') . '/authenticate'; // JSON payload $postData = json_encode([ 'wallet' => $wallet, 'password' => $password ]); // Initialize cURL $ch = curl_init($url); // Set cURL options curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return the response curl_setopt($ch, CURLOPT_POST, true); // Use POST method curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);// Set the request body curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Content-Length: ' . strlen($postData) ]); // Execute the request $response = curl_exec($ch); // Check for cURL errors if (curl_errno($ch)) { curl_close($ch); return [ 'success' => false, 'error' => 'Curl error: ' . curl_error($ch) ]; } // 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['data']['token'])) { return [ 'success' => true, 'token' => $result['data']['token'], 'expires_at' => $result['data']['expires_at'] ]; } else { return [ 'success' => false, 'error' => $result['message'] ?? 'Unknown error', 'details' => $result['errors'] ?? [] ]; } } } ?>