Closed lcarbajals closed 1 year ago
Has revisado que HTTP code devuelve en Postamn? tal vez esta retornando 200 OK
Cuando el cliente no está autorizado, retorna así el postman, pero el algoritmo en la funcion getToken, deja pasar porque no hay una validación si $result tiene valor o no
Deberia retornar una excepcion cuando el http code es 401, el problema debe estar en el generador de API.
De cualquier forma validar el result, sera la solucion mas rapida
Al generar el token, usando la funcion getToken(), del archivo greenter/ws/src/Api/ApiFactory.php, con el postman retorna el mensaje del cliente no autorizado, tal como se muestra:
Pero al usar la funcion, no valida el $result:
private function getToken(?string $clientId, ?string $secret, ?string $user, ?string $password): ?string { $tokenData = $this->store->get($clientId); if ($tokenData && $tokenData->getExpire() > $this->addSeconds(new DateTime(), 600)) { return $tokenData->getValue(); } $result = $this->api->getToken( 'password', 'https://api-cpe.sunat.gob.pe', $clientId, $secret, $user, $password ); //Faltaria: //Validar si cliente está autorizado
//**throw
new Exception('Cliente No autorizado'); //_Validar si resultado es vacio_ `//throw` new Exception('No se pudo obtener el token, intente en unos inutos');** $token = $result->getAccessToken(); $expire = $this->addSeconds(new DateTime(), $result->getExpiresIn()); $this->store->set($clientId, new BasicToken($token, $expire));Ya que no valida ninguna de las opciones mencionadas, genera el siguiente error
ya que intenta asignar un tiempo de expiracion en la linea: $this->addSeconds(new DateTime(), $result->getExpiresIn());