Ir para conteúdo
  • Cadastre-se

Recommended Posts

  • Membros Pro
Postado
Agora, Marco Tulio Lima Alves disse:

Boa tarde!

Como eu consigo identificar o CodigoNaturezaCarga?

Existe uma tabela interna na ANTT disso?

O que eu preciso informar neste campo?

Boa tarde.

É o NCM do produto de maior valor da carga.
Ou 0001 que significa Carga Geral.

  • Curtir 1
  • Membros Pro
Postado

Alguém que conseguiu fazer essa geração do CIOT em produção poderia compartilhar seu código?

  • Consultores
Postado
19 minutos atrás, VFADev disse:

Alguém que conseguiu fazer essa geração do CIOT em produção poderia compartilhar seu código?

em que? pois o CIOT existem diveros IPEF?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membros Pro
Postado
2 minutos atrás, Juliomar Marchetti disse:

em que? pois o CIOT existem diveros IPEF?

Boa tarde

Parece que neste topico a galera está tratando de gerar o CIOT direto pelo webservice da ANTT, sem passar por um IPEF, que é permitido para a Frota Propria.

  • Curtir 1
  • Membros Pro
Postado
29 minutos atrás, Centrodata Sistemas disse:

Boa tarde

Parece que neste topico a galera está tratando de gerar o CIOT direto pelo webservice da ANTT, sem passar por um IPEF, que é permitido para a Frota Propria.

Isso mesmo!

Postado

somente usando o executável que esta disponível no site junto com o documentação de integração.

Se possível passa o seu fonte aqui pra acessar a dll pra gerar o id, pro pessoal dar uma olhada

  • Membros
Postado
3 horas atrás, ben-hur.hungaro disse:

Alguem conseguiu gerar um id valido?
eu tentei pela DLL tbm, ela gera o id.. porem ao transmtir ele da como invalido

Até mais cedo estava funcionando. ninguém me reclamou pela tarde. Eu gerei em contingência com as tags e depois de uma hora consegui fazer envio.

Postado

Olá a todos, gostaria de saber se alguem obteve exito, se pode informar os endpoints. tentei gerar o Id , URL := 'https://appservices.antt.gov.br/pefServices/gerar'; , mas o retorno foi inviavel: === GERANDO CIOT ===
JSON Enviado: {"CpfCnpj":"31383970000147"} Status Code: 500 .  E para a geracao do Ciot estou usando: https://appservices.antt.gov.br/pefServices/api/DeclaracaoOperacaoTransporte  , mas ainda tenho varios bugs no meu codigo: {"IdOperacaoTransporte":null,"CodigoVerificador":null,"Protocolo":"E98000002677917","Codigo":"205,208,225","Mensagem":"[\"Rejeição: O campo IdOperacaoTransporte é inválido.\",\"Rejeição: É obrigatório informar ao menos um implemento quando o veículo automotor for do tipo cavalo-trator.\",\"Rejeição: CPF/CNPJ do destinatário obrigatório para o tipo de operação informado.\",\"Rejeição: O(s) contratante(s) da carga fracionada não pode(m) ser igual(is) ao contratante da operação de transporte.\",\"Rejeição: A data de início da viagem não pode ser inferior à  data atual.\",\"Rejeição: A data de início da viagem não pode ser inferior à  data de declaração.\"]","AvisoTransportador":null} .  Se alguem tiver e puder fornecer mais informações, agradeço. Ps: Se nao houver problemas posso postar o codigo que estou utilizando no Xe8.

Postado (editado)
5 horas atrás, Gm Saldanha disse:

Olá a todos, gostaria de saber se alguem obteve exito, se pode informar os endpoints. tentei gerar o Id , URL := 'https://appservices.antt.gov.br/pefServices/gerar'; , mas o retorno foi inviavel: === GERANDO CIOT ===
JSON Enviado: {"CpfCnpj":"31383970000147"} Status Code: 500 .  E para a geracao do Ciot estou usando: https://appservices.antt.gov.br/pefServices/api/DeclaracaoOperacaoTransporte  , mas ainda tenho varios bugs no meu codigo: {"IdOperacaoTransporte":null,"CodigoVerificador":null,"Protocolo":"E98000002677917","Codigo":"205,208,225","Mensagem":"[\"Rejeição: O campo IdOperacaoTransporte é inválido.\",\"Rejeição: É obrigatório informar ao menos um implemento quando o veículo automotor for do tipo cavalo-trator.\",\"Rejeição: CPF/CNPJ do destinatário obrigatório para o tipo de operação informado.\",\"Rejeição: O(s) contratante(s) da carga fracionada não pode(m) ser igual(is) ao contratante da operação de transporte.\",\"Rejeição: A data de início da viagem não pode ser inferior à  data atual.\",\"Rejeição: A data de início da viagem não pode ser inferior à  data de declaração.\"]","AvisoTransportador":null} .  Se alguem tiver e puder fornecer mais informações, agradeço. Ps: Se nao houver problemas posso postar o codigo que estou utilizando no Xe8.

Então.

No seu Json, o campo IdOperacaoTransporte é o Valor gerado pela rota https://appservices.antt.gov.br/pefServices/gerar

Inclusive, este é o numero que vai para o MDFe.

Consegui fazer a declaração no Ambiente de Homologação, mas ainda não subimos para produção no nosso ERP.
Inclusive, alguns grupos que eu tenho de transportadora esta dizendo que o ambiente de prod ainda está instavel e a orientação é emitir em contigencia.

Editado por Marco Tulio Lima Alves
  • Curtir 2
  • Obrigado 1
Postado

Ola, Marcos. O Valor foi gerado pela rota https://appservices-hml.antt.gov.br/pefServices/gerar que é de homologação, como fiz no codigo anexo acima e gera o json de saida: URL: https://appservices-hml.antt.gov.br/pefServices/gerar
Status Code: 200
Resposta Bruta: {"Sucesso":true,"Mensagem":"CIOT gerado com sucesso","Dados":{"CIOT":"560000157333","CpfCnpj":"xx.xxx/xxxx-xx","DataGeracao":"2026-06-04T09:36:48.5855354"},"Erros":null}
Mensagem do servidor: CIOT gerado com sucesso ,
>>> CIOT GERADO COM SUCESSO: 560000157333 <<<  , mas se for feito em contingencia o prazo para validar posteriormente é de 7 dias, o problema é se a validação não der certo. Gostaria de saber se o codigo que estou usando com o acbrmdfe pra validar o certificado esta funcionando.

  • Curtir 1
Postado

Só conseguir gerar um IdoperacaoTransporte valido usando o aplicativo https://www.gov.br/antt/pt-br/assuntos/cargas/ciot-para-todos-1/documentos-tecnicos/piso-minimo-ciot em producao com a Dll, de posse do codigo funcionou normal:  Retorno: Status Code: 200
Resposta: {"IdOperacaoTransporte":"520004603581","CodigoVerificador":"3558","Protocolo":"5200046035813558","Codigo":"110","Mensagem":"Dados inseridos com sucesso!","AvisoTransportador":null}

  • Consultores
Postado
8 horas atrás, Dangelo2010 disse:

Boa tarde!

O ACBr ja tem um componente para o CIOT ANTT ou e feito somente direto pelo site?

Existe o componente ACBrCIOT mas está funcional somente com eFrete . 

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)

Tive algum progresso aqui, usando diretamente o TDFeSSL do próprio ACBr.

Obtive os dados tanto em produção como em homologação, claro que é apenas uma consulta, não evolui ainda para a geração do CIOT, mas fica a dica de utilizar o próprio TDFeSSL do ACBr
 


procedure TForm1.Button1Click(Sender: TObject);
const
  LUrlHomologacao : String = 'https://appservices-hml.antt.gov.br/pefServices';
  LUrlProducao    : String = 'https://appservices.antt.gov.br/pefServices';
var
   LSSL: TDFeSSL; //uses ACBrDFeSSL
   LJson: String;
   LRetorno: String;
   LUrl: String;
begin
  if (not FDConnection1.Connected) then
    FDConnection1.Open;

  qCertificado.Close;
  qCertificado.Open;

  LSSL              := TDFeSSL.Create;

  LSSL.SSLCryptLib    := cryWinCrypt;
  LSSL.SSLHttpLib     := httpWinHttp;
  LSSL.SSLXmlSignLib  := xsLibXml2;

  //Carrega certificado A1 armazenado no abnco
  LSSL.Senha        := qCertificadoSENHA.AsString;
  LSSL.NumeroSerie  := qCertificadoNUMERO_SERIE.AsString;
  LSSL.DadosPFX     := TNetEncoding.Base64.Decode(qCertificadoDADOS_PFX.AsAnsiString);

  LSSL.CarregarCertificado;

  if (not LSSL.CertificadoLido) then
    raise Exception.Create('Certificado digital não pode ser carregado! ' +
                           'Verifique certificado cadastrado no cadastro de filiais.');

  if (LSSL.CertDataVenc < Now) then
    raise Exception.Create('Certificado  da filial X venceu em ' + DateTimeToStr(LSSL.CertDataVenc));

  //LUrl      := LUrlHomologacao + '/api/ConsultarSituacaoTransportador';
  LUrl      := LUrlProducao + '/api/ConsultarSituacaoTransportador';
//segundo o manual o RNTRC se for 7 digitos deveria aceitar, mas aqui rejeitou, entao adicionei 0 a esquerda ate completar os 9 e passou
  LJson     := '{"CpfCnpjInteressado": "xxxx", "CpfCnpjTransportador": "xxxx", "RNTRCTransportador": "999999999"}';
  
  LRetorno  := LSSL.Enviar(LJson, LUrl, '', 'application/json; charset=utf-8', '', False);

end;

 

 

Editado por MarcosRWeimer
  • Curtir 2

-=Ma®©oS=-

Postado

Ola a todos, preciso de ajuda pra saber se o processo é valido.  Abri a Dll GeradorCIOTShared.dll no  ILSpy e ela foi compilada como uma DLL .NET. dentro dela temos: GeradorCIOTService_v3
ValidarCIOT
GerarCIOT
AutenticarEObterTokenAsync
ObterApiKey.   Ou seja a DLL possui autenticação própria. Então achei   o token que é fixo 3UwR]CYTeAQRF   , pra usar em URL := 'https://mtcuybq605.execute-api.sa-east-1.amazonaws.com/api-ciot-prd/GeradorCIOT/token'; Depois disso montei o codigo: 

procedure TFRMMDFENEW.BitBtn31Click(Sender: TObject);
var
  Http: TIdHTTP;
  SSL: TIdSSLIOHandlerSocketOpenSSL;
  JsonEnvio: TStringStream;
  Resposta: string;
  URL: string;
  Token: string;
  JsonResposta: TJSONObject;
begin
  URL := 'https://mtcuybq605.execute-api.sa-east-1.amazonaws.com/api-ciot-prd/GeradorCIOT/token';

  Http := TIdHTTP.Create(nil);
  SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  SSL.SSLOptions.Method := sslvTLSv1_2;
  SSL.SSLOptions.SSLVersions := [sslvTLSv1_2];

  try
    Http.IOHandler := SSL;

    Http.Request.ContentType := 'application/json';
    Http.Request.Accept := 'application/json';

    // vamos descobrir se a chave está correta
    Http.Request.CustomHeaders.Values['chave'] := '3UwR]CYTeAQRF';

    JsonEnvio := TStringStream.Create('{}', TEncoding.UTF8);
    try
      Resposta := Http.Post(URL, JsonEnvio);

      MemoCIOT.Lines.Add('HTTP: ' + IntToStr(Http.ResponseCode));
      MemoCIOT.Lines.Add('Resposta:');
      MemoCIOT.Lines.Add(Resposta);

    finally
      JsonEnvio.Free;
    end;

  except
    on E: Exception do
    begin
      MemoCIOT.Lines.Add('ERRO: ' + E.Message);

      if Assigned(Http.Response) then
        MemoCIOT.Lines.Add('HTTP: ' + IntToStr(Http.ResponseCode));
    end;
  end;

   JsonResposta := TJSONObject.ParseJSONValue(Resposta) as TJSONObject;
    if JsonResposta <> nil then
    begin
      try
        memociot.Lines.Add('=== Dados  ===');
        memociot.Lines.Add('token: ' + JsonResposta.GetValue<string>('token', ''));
        token:= JsonResposta.GetValue<string>('token', '');
      finally
        JsonResposta.Free;
      end;
    end;

URL :='https://mtcuybq605.execute-api.sa-east-1.amazonaws.com/api-ciot-prd/GeradorCIOT/gerar';

Http.Request.CustomHeaders.Values['Authorization'] :=
  'Bearer ' + Token;

JsonEnvio :=
  TStringStream.Create(
    '{"cpfCnpj":"'+OnlyNumbers(frmmodule.tblempresaCNPJ.Text)+'"}',
    TEncoding.UTF8
  );

Resposta := Http.Post(URL, JsonEnvio);
MemoCIOT.Lines.Add('Resposta: ' + Resposta);

  SSL.Free;
  Http.Free;
end;  Que vai retornar este resultado:  HTTP: 200
Resposta:
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkV4ZWN1dGF2ZWxDbGllbnRlIiwibmJmIjoxNzgxMTgwNzQ3LCJleHAiOjE3ODExODQzNDcsImlhdCI6MTc4MTE4MDc0NywiaXNzIjoiR2VyYWRvckNJT1RBUEkiLCJhdWQiOiJHZXJhZG9yQ0lPVENsaWVudCJ9.XEk3ftq3a7wiHRTaHTBqeV6Niax4W4sUXxZ_NN7QiRU"}
=== Dados  ===
token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkV4ZWN1dGF2ZWxDbGllbnRlIiwibmJmIjoxNzgxMTgwNzQ3LCJleHAiOjE3ODExODQzNDcsImlhdCI6MTc4MTE4MDc0NywiaXNzIjoiR2VyYWRvckNJT1RBUEkiLCJhdWQiOiJHZXJhZG9yQ0lPVENsaWVudCJ9.XEk3ftq3a7wiHRTaHTBqeV6Niax4W4sUXxZ_NN7QiRU
Resposta: {"sucesso":true,"mensagem":"CIOT gerado com sucesso","dados":{"ciot":"520005524641","cnpj":"xx.xxx/xxxx-xx","dataGeracao":"2026-06-11T12:25:47.8038116+00:00"},"erros":null}  , consegui consultar o ciot normalmente. Com isso não vou precisar usar o aplicativo da ANTT indiretamente, mas quero saber se não vai haver algum problema com isso, Obrigado.

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...