Ir para conteúdo
  • Cadastre-se

dev botao

Consumir API ScannTech - Clube de Promoções


Recommended Posts

Estou fazendo uma integração com clube de promoções Scanntec via API, o que ocorre é que quando tento enviar o arquivo, Json com as vendas para API ela retorna erro 400. Segundo a Scanntec, o arquivo Json não chega a ser postado. Estou usando componente IdHTTP para fazer o envio (POST), abaixo vou anexar meu código e o json para vocês analisarem.  Na documentação da Scanntech a API deveria retornar o código 200 para ser efetivado.
 

Erro_delphiCod.txt Arquivo_Venda_60.TXT

Att,

---------------------

Marcos Martins

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • Membros Pro
Em 21/09/2021 at 16:21, marcoshmartins disse:

Estou fazendo uma integração com clube de promoções Scanntec via API, o que ocorre é que quando tento enviar o arquivo, Json com as vendas para API ela retorna erro 400. Segundo a Scanntec, o arquivo Json não chega a ser postado. Estou usando componente IdHTTP para fazer o envio (POST), abaixo vou anexar meu código e o json para vocês analisarem.  Na documentação da Scanntech a API deveria retornar o código 200 para ser efetivado.
 

Erro_delphiCod.txt 1.65 kB · 50 downloads Arquivo_Venda_60.TXT 785 B · 47 downloads

oi @marcoshmartins

Voce conseguiu concluir a integração.

Estou iniciando ela agora... tem alguns exemplos que possa me enviar?

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...

Boa tarde colegas,

Só para dar minha contribuição aqui. Eu estou homologando com a scanntech também, já tem uns dois anos que estou tentando concluir essa integração. kkkkkk. No meu caso  foi por falta de tempo em me dedicar. A integração com eles exige tempo para não deixar passar nenhum detalhe. E como eles tem vários tipos de promoções diferentes, se torna bem exaustivo implementar todas no software, principalemnte se ele não foi desenvolvido inicalmente para aceitar esses tipos de promoções. 

Passei por algumas situações de erro 400 estes últimos meses. Então vou dar uma olhada nos arquivos que você anexou para ver se consigo ajudar. Mesmo sabendo que não vai mais continuar com a integração, mas pode ser que ajude o nosso outro camarada, ou outra pessoa que esteja pensando em integrar com eles também. Se eu descobrir o motivo do seu erro 400 ou mesmo se eue não descobrir, vou postar aqui.

Link para o comentário
Compartilhar em outros sites

O link que você está usando parece estar correto.

No meu caso eu não usei IdHTTP para comunicar com a API deles, eu usei mesmo o TRestRequest. Não sei qual a versão do seu delphi, mas se tiver esse componente, recomendo que use ele, é bem mais fácil de lidar do que com o IdHTTP, na minha opinião.

Vou postar aqui o código que eu utilizei para enviar a venda:

procedure TdmVendaScanNtech.EnviarVendaNOTA(nota: string; out erro: string);
var VJSONObject: TJSONObject;
    vendaScanNtech :TRootDTO;
begin
  erro := '';
  rstRequest.Method := TRESTRequestMethod.rmPOST;
  rstRequest.Resource := '/movimientos';

  MontarHeaderRequest;

  vendaScanNtech := MontarJSONVendaNOTA(nota);
  try
    VJSONObject := TJson.ObjectToJsonObject(vendaScanNtech);
    SalvarArquivo(pathLog+'\vendaScanNtech_'+nota+'.json',VJSONObject.ToString);

    with rstRequest.Params.AddItem do
    begin
      ContentType := TRESTContentType.ctAPPLICATION_JSON;
      name        := 'param'; // param name
      Value       := vJSONObject.ToString; // seu json
      Kind        := pkREQUESTBODY;
    end;

    rstRequest.Execute;

    if (RESTResponse1.StatusCode = 200) or (RESTResponse1.StatusCode = 208) then //deu certo
    begin
    //por enquanto não precisa fazer nada.
    end
    else if (RESTResponse1.StatusCode >= 500) and (RESTResponse1.StatusCode <= 599) then
    begin
      erro := 'erro de comunicação com o servidor da ScanNTech:'+slinebreak+
          RESTResponse1.StatusCode.ToString+'-'+RESTResponse1.Content;
      Log(erro);
    end
    else
    begin
      erro := 'Erro na estrutura do envio do arquivo da ScanNTech. '+slinebreak+
               RESTResponse1.StatusCode.ToString+'-'+RESTResponse1.Content;
      Log(erro);
    end;
  finally
    vendaScanNtech.Free;
  end;

Uma coisa que observei também é que o json da venda tem que ser passado como body da requisição e não como parâmetro GET / POST. Eu não sei se o idhttp identifica os parametros do método post como body ou como POST. Mas pode ser este o problema também. Espero que isso ajude quem está tentando fazer essa integração e está tendo problemas com a comunicação.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
Em 13/02/2024 at 16:18, AlessandroOmmega disse:

Vocês entraram em contato pelo site deles mesmos para conseguir as documentações? 

No meu caso, eles entraram em contato com um cliente meu para perguntar se ele queria a integração. Ai o cliente passou o meu contato para este vendedor e ele começou a conversar comigo pelo telegram. Ai depois ele pediu o meu whats para passar no grupo deles que auxiliam na integração. Lá eles me mandaram os links com as documentações e ambiente de testes. Mas hoje fui tentar acessar alguns desses links e parece que não estão funcionando mais. Eles devem ter mudado a plataforma. Hoje estou na fase onde eles observam por uma ou duas semanas a integração pra ver se os dados estão chegando corretamente. Se tiver qualquer erro, eles pedem pra corrigir e atualizar e depois observam por mais duas semanas. Se ficar por duas semanas sem dar nenhum problema, ai ja vamos pra proxima fazer que é testar as promoções. Ai se der tudo certo, eles liberam pra gente poder oferecer pra qualquer cliente. Então por enquanto estou com esse sistema de integração rodando em apenas 5 clientes de teste.

Link para o comentário
Compartilhar em outros sites

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