apiKey = $apiKey; $this->secretKey = $secretKey; } public function getAccessToken() { if (!$this->accessToken || $this->isAccessTokenExpired()) { if ($this->refreshAccessToken()) { return $this->accessToken; } return $this->getNewAccessToken(); } return $this->accessToken; } private function isAccessTokenExpired() { return $this->accessTokenExpirationTime < time(); } private function refreshAccessToken() { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://napi.jibit.io/ide/v1/tokens/refresh', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ 'refreshToken' => $this->refreshToken, ]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), )); $response = curl_exec($curl); if (curl_errno($curl)) { return false; } curl_close($curl); $data = json_decode($response); if (isset($data->accessToken)) { $this->accessToken = $data->accessToken; $this->refreshToken = $data->refreshToken; $this->accessTokenExpirationTime = time() + 86400; return true; } return false; } private function getNewAccessToken() { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://napi.jibit.io/ide/v1/tokens/generate', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ 'apiKey' => $this->apiKey, 'secretKey' => $this->secretKey ]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), )); $response = curl_exec($curl); if (curl_errno($curl)) { return "Error: " . curl_error($curl); } curl_close($curl); $data = json_decode($response); if (isset($data->accessToken)) { $this->accessToken = $data->accessToken; $this->refreshToken = $data->refreshToken; $this->accessTokenExpirationTime = time() + 86400; return $this->accessToken; } else { return "Error: Access token not found."; } } public function checkMobileNumber($nationalCode, $mobileNumber) { $accessToken = $this->getAccessToken(); if (strpos($accessToken, 'Error') !== false) { return $accessToken; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://napi.jibit.io/ide/v1/services/matching?nationalCode={$nationalCode}&mobileNumber={$mobileNumber}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $accessToken ), )); $response = curl_exec($curl); if (curl_errno($curl)) { return "Error: " . curl_error($curl); } curl_close($curl); return json_decode($response); } public function compareWithNationalRegistry($nationalCode, $birthDate, $fullName) { $accessToken = $this->getAccessToken(); if (strpos($accessToken, 'Error') !== false) { return $accessToken; } $encodedFullName = urlencode($fullName); $encodedBirthDate = urlencode($birthDate); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://napi.jibit.io/ide/v1/services/identity/similarity?nationalCode={$nationalCode}&birthDate={$encodedBirthDate}&fullName={$encodedFullName}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $accessToken ), )); $response = curl_exec($curl); curl_close($curl); return json_decode($response)->fullNameSimilarityPercentage; } public function checkBankCard($cardNumber, $nationalCode, $birthDate) { $accessToken = $this->getAccessToken(); if (strpos($accessToken, 'Error') !== false) { return $accessToken; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://napi.jibit.io/ide/v1/services/matching?cardNumber={$cardNumber}&nationalCode={$nationalCode}&birthDate={$birthDate}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $accessToken ), )); $response = curl_exec($curl); curl_close($curl); return json_decode($response)->matched; } public function cardToSheba($cardNumber) { $accessToken = $this->getAccessToken(); if (strpos($accessToken, 'Error') !== false) { return $accessToken; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://napi.jibit.io/ide/v1/cards?number={$cardNumber}&iban=true", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $accessToken ), )); $response = curl_exec($curl); curl_close($curl); return json_decode($response); } } $apiRequest = new ApiRequest($jibit_key, $jibit_secret);