Jump to content

logo_acbr_paygo.png

Chegou o TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


botao_saibamais.png

beneficios.png

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

cellfantasma

Membros
  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

0 Neutral

About cellfantasma

  • Rank
    Novato

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Pessoal, queria uma força de quem está tentando fazer integração do iFood ou de quem souber resolver este problema. Abaixo o trexo do código: var Indy: TidHTTP; sURL: WideString; ssResponse: TStringStream; sToken: String; begin sToken := memo1.Lines.Text; sURL := 'https://pos-api.ifood.com.br/v3.0/orders/'+ edtReference.text; ssResponse := TStringStream.Create; Indy := TidHTTP.Create; try with Indy do begin // Request.Clear; // Request.ContentType := 'application/json'; // Request.Charset := 'UFT-8'; // Request.BasicAuthentication := False; // Request.CustomHeaders.Clear; // Request.CustomHeaders.AddValue('Content-Type', 'application/json'); ProtocolVersion := pv1_1; Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + sToken); // Request.CustomHeaders.AddValue('cache-control', 'no-cache'); // Request.Accept := 'application/json'; Get(sURL, ssResponse); end; except on E: EIdHTTPProtocolException do if not (E.ErrorCode in [200,201,202]) and not(E.ErrorCode = 404) then MessageDlg( 'Erro de Requisição' + #13#10 + 'Code: ' + IntToStr(E.ErrorCode) + ' ' + E.Message , mtInformation, [mbOK], 0 ); end; Pois bem. Estou tentando fazer requisições dos endpoints de Orders do ifood, segue link com a decumentação: https://developer.ifood.com.br/reference#eventspolling. Estou conseguindo pegar o Token, com o token faço o Polling sem problemas. Quando chego na parte da mudança de status dos pedidos, encontro sempre o seguinte erro '401 - Unauthorized', sergundo o ifood o seguinte erro ocorre por conta que o token não ser valido. Mas o mesmo token no PostMan faz a requisição. Já tentei até acrescentar os header no postMan, ja tirei todos os Header deixando apenas o Authorization. Então recorro a este forum, e pergunto alguém tem alguma ideia do que seja?
  2. Ok, muito obrigado, já estou seguindo sua dica e pesquisando sobre.
  3. Olá não tentei ainda, pois quando comecei a pesquisar, encontrei algumas soluções e exemplos usando TidHTTP para fazer as requisições.
  4. Boa tarde pessoal. Se possível queria uma ajuda de vocês. Estou tentando fazer a integração com API do iFood e estou com problemas no endpoint de Abertura/Fechamento do resturante ao dar Put em ' https://pos-api.ifood.com.br/v1.0/merchants/id/statuses' Sempre que executa o delphi retorna a seguinte mensagem: '[dcc32 Error] uDMiFood.pas(261): E2250 There is no overloaded version of 'Put' that can be called with these arguments' Ja verifiquei dentro do TidHTTP e há dois métodos de put, estou informando os parametros que correpondem ao primeiro método 1) procedure TIdCustomHTTP.Put(AURL: string; ASource, AResponseContent: TStream); begin DoRequest(Id_HTTPMethodPut, AURL, ASource, AResponseContent, []); end; ---------------------------------------------------------------------------------------------- 2) function TIdCustomHTTP.Put(AURL: string; ASource: TStream {$IFDEF STRING_IS_ANSI}; ADestEncoding: IIdTextEncoding = nil{$ENDIF} ): string; var LResponse: TMemoryStream; begin LResponse := TMemoryStream.Create; try Put(AURL, ASource, LResponse); LResponse.Position := 0; Result := ReadStringAsCharset(LResponse, Response.Charset{$IFDEF STRING_IS_ANSI}, ADestEncoding{$ENDIF}); finally FreeAndNil(LResponse); end; end; ------------------------------------------------------------------------------------------- Fiz seguindo o exemplo do seguinte site: http://www.bemmelhor.com.br/info/index.php?title=HTTP_GET_no_Delphi_2010 Abaixo o trecho do código que estou trabalhando, desde já agradeço. procedure TdmIFood.StatusRestaurante(pStatus, pMotivo, pMerchant: String); var slParam: TStringList; HTTPClient: TidHTTP; ssJson: TStringStream; begin HTTPClient := TidHTTP.Create; slParam := TStringList.Create; ssJson := TStringStream.Create('', TEncoding.UTF8); try with slParam do begin Add('status=' + pStatus); Add('reason=' + pMotivo); end; with HttpClient do begin Request.Clear; Request.ContentType := 'application/json'; Request.CharSet := 'UTF-8'; Request.BasicAuthentication := False; Request.CustomHeaders.Clear; Request.CustomHeaders.AddValue('cache-control', 'no-cache'); Request.CustomHeaders.AddValue('Content-Type', 'application/json'); Request.CustomHeaders.AddValue('Authorization', 'bearer' + FToken); Request.Accept := 'application/json'; Put('https://pos-api.ifood.com.br/v1.0/merchants/' + pMerchant + '/statuses', slParam, ssJson); end; ShowMessage(ssJson.DataString); finally FreeAndNil(HTTPClient); FreeAndNil(slParam); FreeAndNil(ssJson); end; end;
×
×
  • Create New...