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 1

-=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...