autenticarProcurador method
Autentica procurador usando termo de autorização assinado digitalmente
Este método é usado quando um procurador precisa realizar operações em nome do contribuinte.
termoAutorizacaoBase64: Termo de autorização assinado e codificado em Base64
contratanteNumero: CNPJ da empresa contratante
autorPedidoDadosNumero: CPF/CNPJ do procurador
Retorna: Map com token de procurador e informações de cache
Implementation
Future<Map<String, dynamic>> autenticarProcurador({
required String termoAutorizacaoBase64,
required String contratanteNumero,
required String autorPedidoDadosNumero,
}) async {
if (_authModel == null) {
throw Exception(
'Cliente não autenticado. Chame o método authenticate primeiro.',
);
}
final requestBody = {'termoAutorizacao': termoAutorizacaoBase64};
final requestTag = RequestTagGenerator.generateRequestTag(
autorPedidoDadosNumero: autorPedidoDadosNumero,
contribuinteNumero: contratanteNumero,
idServico: 'AUTENTICARPROCURADOR',
);
final response = await http.post(
Uri.parse('$_baseUrl/AutenticarProcurador'),
headers: {
'Authorization': 'Bearer ${_authModel!.accessToken}',
'jwt_token': _authModel!.jwtToken,
'Content-Type': 'application/json',
'X-Request-Tag': requestTag,
},
body: json.encode(requestBody),
);
if (response.statusCode >= 200 && response.statusCode < 300) {
Map<String, dynamic> responseBody =
json.decode(utf8.decode(response.bodyBytes)) as Map<String, dynamic>;
// Salvar token de procurador no authModel
if (responseBody['autenticarProcuradorToken'] != null) {
// Atualizar o _authModel com o token do procurador
_updateProcuradorToken(responseBody['autenticarProcuradorToken']);
}
return responseBody;
} else {
throw Exception(
'Falha na autenticação de procurador: ${response.statusCode} - ${utf8.decode(response.bodyBytes)}',
);
}
}