session token does not generate in php laravel
-
public function generateTOTPCode()
{
$secret = $this->totpSecret; // Example, if not Base32 encoded
$base32Secret = Base32::encode($secret);if (!$base32Secret) { throw new Exception('TOTP Secret is not set in the environment file.'); } $totp = TOTP::create($base32Secret); return $totp->now(); // This will generate the current 6-digit TOTP code }
protected function generateSessionToken()
{
$client = new Client();try { $totpCode = $this->generateTOTPCode(); $response = $client->post('https://apiconnect.angelbroking.com/rest/auth/angelbroking/user/v1/loginByPassword', [ 'json' => [ 'clientcode' => env('ANGEL_BROKING_CLIENT_CODE'), 'password' => env('ANGEL_BROKING_PASSWORD'), 'totp' => $totpCode, ], 'headers' => [ 'X-API-Key' => $this->apiKey, 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'X-UserType' => 'USER', 'X-SourceID' => 'WEB', 'X-ClientLocalIP' => $_SERVER['SERVER_ADDR'], 'X-ClientPublicIP' => file_get_contents('https://api.ipify.org'), 'X-MACAddress' => 'f8:32:e4:9c:27:0d', ], ]); $statusCode = $response->getStatusCode(); $responseBody = $response->getBody()->getContents(); $responseData = json_decode($responseBody, true); Log::info('API Response:', ['status' => $statusCode, 'body' => $responseBody]); if ($statusCode == 200) { if (isset($responseData['data']['jwtToken'])) { return $responseData['data']['jwtToken']; } elseif (isset($responseData['success']) && !$responseData['success']) { $errorMessage = isset($responseData['message']) ? $responseData['message'] : 'Unknown error occurred'; throw new Exception('Failed to generate session token: ' . $errorMessage); } throw new Exception('Failed to generate session token: Unexpected response'); } else { throw new Exception('Failed to generate session token: Status Code ' . $statusCode); } } catch (Exception $e) { dd($e); Log::error('Error generating session token: ' . $e->getMessage()); throw $e; } }
env : -
ANGEL_BROKING_CLIENT_CODE=H56857442
ANGEL_BROKING_PASSWORD=5285
ANGEL_BROKING_TOTP=BDODBV4DALNVJGAPS4R7YS3J7Aplz give solution
-
The method you are trying to create the TOTP is incorrect. You need to create it via authenticator app. TOTP is a 6 digit integer.