Ir para conteúdo
  • Cadastre-se

dev botao

Criar Location (Itau) Para gerar QRCode vazio e depois anexa-la ao arquivo remessa boleto


Recommended Posts

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

image.thumb.png.24b595ab5ad39fe98a1a07ace811d5bb.png

 

 

 

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.

 

image.thumb.png.0ce02baae64bc5857717a1d4558a368a.png

image.thumb.png.452e8b7c3752f22fb47c8fc036a0e742.png

 

 

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

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

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

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