WashingtonFelipe Postado 18 Janeiro Compartilhar Postado 18 Janeiro No Banco do Itau, existe um EndPoint chamado /loc aonde o mesmo é gerado uma location vazia para que depois possa ser anexada junto com o arquivo de remessa(CNAB400) Abaixo o Link da documentação da API https://devportal.itau.com.br/nossas-apis/itau-ep9-gtw-pix-recebimentos-ext-v2#tag/Location Após algumas analises, verifiquei que no ACBrPIXCD não existia esta implementação, dito isso, realizei a implementação do mesmo, porem no momento apenas do metodo POST(/loc) para criação de location. A Implementação foi realizada na unit ACBrPIXPSPItau Abaixo o código implementado na unit do Itau function TACBrPSPItau.CriarLocation(ATypeLocation : String;out ARetJSON : String): Boolean; var Body, ep: String; RespostaHttp: AnsiString; ResultCode: Integer; AURL : String; js: TACBrJSONObject; begin if (UpperCase(ATypeLocation) = '') or (UpperCase(ATypeLocation) <> 'COB') and (UpperCase(ATypeLocation) <> 'COBV') then raise EACBrPSPException.CreateFmt( ACBrStr(sErroPropriedadeNaoDefinida), ['ATypeLocation']); if (NivelLog > 1) then RegistrarLog('CriarLocation'+ATypeLocation); Body := '{"tipoCob": "'+ATypeLocation+'"}'; Clear; PrepararHTTP; ep := ChttpMethodPOST; ConfigurarBody(ep, cItauPathAPIPixLocation, Body); WriteStrToStream(Http.Document, Body); Http.MimeType := CContentTypeApplicationJSon; ConfigurarAutenticacao(ep, cItauPathAPIPixLocation); if (ACBrPixCD.Ambiente = ambProducao) then AURL := cItauURLProducao + cItauPathAPIPix + cItauPathAPIPixLocation else begin VerificarAutenticacao; AURL := cItauURLSandbox + cItauPathAPIPix + cItauPathAPIPixLocation; end; TransmitirHttp(ChttpMethodPOST, AURL, ResultCode, RespostaHttp); Result := (ResultCode = HTTP_CREATED); if (ResultCode = HTTP_CREATED) then begin ARetJSON := String(RespostaHttp); js := TACBrJSONObject.Parse(RespostaHttp); try RegistrarLog('id - '+js.AsString['id']); RegistrarLog('location - '+js.AsString['location']); RegistrarLog('tipoCob - '+js.AsString['tipoCob']); RegistrarLog('criacao - '+js.AsString['criacao']); finally js.Free; end; end else DispararExcecao(EACBrPixHttpException.CreateFmt(sErroHttp, [Http.ResultCode, ChttpMethodPOST, AURL])); end; Abaixo como realizar a chamada da implementação realizada(Para método cobv). var Ok : Boolean; AJSON : String; js: TACBrJSONObject; begin Ok := ACBrPSPItau1.CriarLocation('cobv',AJSON); if OK then begin mmLocationItau.Lines.Add(''); mmLocationItau.Lines.Add('-----------------Criação da Location cobv---------------------'); js := TACBrJSONObject.Parse(AJSON); try mmLocationItau.Lines.Add('id - '+js.AsString['id']); mmLocationItau.Lines.Add('location - '+js.AsString['location']); mmLocationItau.Lines.Add('tipoCob - '+js.AsString['tipoCob']); mmLocationItau.Lines.Add('criacao - '+js.AsString['criacao']); finally js.Free; end; mmLocationItau.Lines.Add('-----------------Fim da Criação da Location cobv---------------------'); end; Abaixo como realizar a chamada da implementação realizada(Para método cob). var Ok : Boolean; AJSON : String; js: TACBrJSONObject; begin Ok := ACBrPSPItau1.CriarLocation('cob',AJSON); if OK then begin mmLocationItau.Lines.Add(''); mmLocationItau.Lines.Add('-----------------Criação da Location cob---------------------'); js := TACBrJSONObject.Parse(AJSON); try mmLocationItau.Lines.Add('id - '+js.AsString['id']); mmLocationItau.Lines.Add('location - '+js.AsString['location']); mmLocationItau.Lines.Add('tipoCob - '+js.AsString['tipoCob']); mmLocationItau.Lines.Add('criacao - '+js.AsString['criacao']); finally js.Free; end; mmLocationItau.Lines.Add('-----------------Fim da Criação da Location cob---------------------'); end; Em Anexo tem a unit do Itau e do projeto PIXCDTeste, aonde implementei uma aba nova para criação da location. ACBrPIXPSPItau.pasFrPrincipal.dfmFrPrincipal.pas OBS: Todos os testes acima, junto com a implementação já foram realizados em Produção. Qualquer duvida estou a disposição, obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores EliasCesar Postado 18 Janeiro Consultores Compartilhar Postado 18 Janeiro Olá @WashingtonFelipe, Muito obrigado pela contribuição! Criada task para análise (TK-5010) Elias César Vieira Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Assine o SAC Link para o comentário Compartilhar em outros sites More sharing options...
Diego Miron Postado 25 Janeiro Compartilhar Postado 25 Janeiro Boa noite... Estou finalizando um projeto nas mesmas condições, geração da location para envio na remessa, etc... A comunicação com a API está ok, obtendo location corretamente, inclusive com a remessa homologada. No entanto tenho uma dúvida referente a como gerar o QrCode. Como seria essa geração vazia vinculando a location? Link para o comentário Compartilhar em outros sites More sharing options...
WashingtonFelipe Postado 1 Fevereiro Autor Compartilhar Postado 1 Fevereiro Em 25/01/2024 at 00:20, Diego Miron disse: Boa noite... Estou finalizando um projeto nas mesmas condições, geração da location para envio na remessa, etc... A comunicação com a API está ok, obtendo location corretamente, inclusive com a remessa homologada. No entanto tenho uma dúvida referente a como gerar o QrCode. Como seria essa geração vazia vinculando a location? Olá, no boleto tem que gerar o pix copia e cola em cima da location. Abaixo comando que utilizei ACBrPixCD1.GerarQRCodeDinamico('sua location'); Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora