Ir para conteúdo
  • Cadastre-se

dev botao

dev botao

Boleto Hibrido Caixa Econômica Federal


Ver Solução Respondido por Renato Rubinho,
  • Este tópico foi criado há 476 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores
Postado

Bom dia @Eduardo Representante Tecnico,

Separei o topico por se tratarem de assuntos diferentes. O topico inicial era sobre PIX e você está contribuindo com uma documentação para boleto hibrido (que também usa PIX :-) ).

Saberia informar se para essa habilitação do serviço na caixa é precisso ser correntista? ou se existe alguma opção para desenvolvedores?

Obrigado!

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

  • 1 mês depois ...
Postado

@Alexandre de Paula Boa noite, eu alterei as units ACBrBoletoW_Caixa e ACBrBoletoRet_Caixa para registrar o boleto hibrido pix da caixa, está registrando o boleto com sucesso, mais estou com problema na linha digitável e codigo de barras que não está batendo com o do retorno do webservice. Vou disponibilizar as units aqui. Tem algumas configurações que precisa ser feita para funcionar.

ACBrBoleto.Configuracoes.WebService.SSLCryptLib :=TSSLCryptLib(cryWinCrypt);
ACBrBoleto.Configuracoes.WebService.UseCertificateHTTP := False;
ACBrBoleto.Cedente.CedenteWS.IndicadorPix :=True; //---Para Boleto Hibrido PIX
ACBrBoleto.Cedente.CedenteWS.IndicadorPix :=False; //---Para Boleto Normal
ACBrBoleto.Configuracoes.WebService.VersaoDF :='3.2'; //----Boleto Hibrido PIX
ACBrBoleto.Configuracoes.WebService.VersaoDF :='3.0'; //----Boleto Normal
QtdePagamentoParcial:= 1;
TipoPagamento:= tpNao_Aceita_Valor_Divergente;
PercentualMinPagamento:= 0;
PercentualMaxPagamento:= 0;
ValorMinPagamento:=0;
ValorMaxPagamento:=0;
Carteira  := 'RG'; 
EspecieDoc:= '99';

Obs: O cliente PJ Caixa tem que ter o contrato de cobrança ativo e solicitar a ativação de emissão de boleto via webservice ao seu gerente de conta PJ Caixa.

ACBrBoletoW_Caixa.pasFetching info... ACBrBoletoRet_Caixa.pasFetching info...

  • Consultores
Postado

Bom dia,

Você utilizou o manual deste tópico ou conseguiu um mais recente? 

Implementei também o boleto híbrido da Caixa, mas estou aguardando o cliente com as credenciais para homologar.

Conseguiu ambiente de homologação ou só em produção? 

Pode enviar arquivo de envio e o retorno recebido para consultores@projetoacbr.com.br para analisarmos? Mencione este tópico para identificarmos o assunto. 

 

  • Consultores
Postado

Boa tarde @Jhonlenon Ribeiro

Validada a impressão do Boleto pelo ACBr de acordo com o Boleto retornado pela Caixa (enviei no seu e-mail a comparação).

Os maiores detalhes a analisar são as propriedades: Banco.LayoutVersaoArquivo e Banco.LayoutVersaoLote
De acordo com essas propriedades o componente irá considerar o Código do Cedente com 6 ou 7 dígitos e aparentemente essa era a diferença do seu boleto para o da caixa.
Ao analisar a composição da linha digitável do boleto gerado pela caixa, notamos que foi considerado o código do cedente com 7 dígitos.

Se olharmos os fontes (ACBrBancoCaixa.pas), para gerar o código do cedente com 7 dígitos, você deve utilizar:
** Banco.LayoutVersaoArquivo :=
107;
** Banco.LayoutVersaoLote    := 67;
ou
** Banco.LayoutVersaoArquivo := 7;

function TACBrCaixaEconomica.DefineCodigoCedente(const ACBrCedente: TACBrCedente): String;
begin
  if ((fpLayoutVersaoArquivo = 107) and (fpLayoutVersaoLote = 67))
     or (fpLayoutVersaoArquivo = 007) then
    Result := PadLeft(  ACBrCedente.CodigoCedente, 7, '0')
  else
    Result := PadLeft(  ACBrCedente.CodigoCedente, 6, '0');
end;

Seguem os fontes finais para emissão do boleto híbrido da Caixa.

1. Por favor, como você possui as credenciais, se possível teste a geração de uma nova cobrança com estes fontes que estou disponibilizando e nos informe se foi registrado novamente com sucesso.

* Após substituir os arquivos, reinstale os componentes.
* Estando tudo ok, enviaremos a implementação para o SVN.

2. Confirme também se ficou tudo ok na emissão do boleto ou informe caso ainda tenha dúvidas a respeito.

ACBrBoletoRet_Caixa.pasFetching info... ACBrBoletoW_Caixa.pasFetching info...

Postado (editado)

@Renato Rubinho  Boa tarde, usar suas units tive que comentar essa linha...pois dava erro ao compilar o componente.

      //Gerador.wCampo(tcStr, '#02.1', 'TIPO', 7, 7, 1, C_TIPO_HIBRIDO, DSC_TIPO_HIBRIDO);

e adicionar essa abaixo
         Gerador.wCampo(tcStr, '#02.1', 'TIPO', 7, 7, 1, 'HIBRIDO', '');

    ACBrBoleto.Banco.LayoutVersaoArquivo := 107;
    ACBrBoleto.Banco.LayoutVersaoLote    := 67;
    ACBrBoleto.Cedente.TipoCarteira      := tctSimples;
    ACBrBoleto.Cedente.TipoDocumento     := Tradicional; 
    ACBrBoleto.Cedente.IdentDistribuicao := tbClienteDistribui; 
    Carteira :='RG';
ou assim 
   ACBrBoleto.Banco.LayoutVersaoArquivo := 7;

01.png

Editado por Jhonlenon Ribeiro
  • Consultores
Postado
  Em 29/04/2024 at 17:14, Jhonlenon Ribeiro disse:

usar suas units tive que comentar essa linha...pois dava erro ao compilar o componente.

      //Gerador.wCampo(tcStr, '#02.1', 'TIPO', 7, 7, 1, C_TIPO_HIBRIDO, DSC_TIPO_HIBRIDO);

e adicionar essa abaixo
         Gerador.wCampo(tcStr, '#02.1', 'TIPO', 7, 7, 1, 'HIBRIDO', '');

Expandir  

Qual erro apresenta?
* Reinstalou os componentes e fez um "Build All" na aplicação?

1. C_TIPO_HIBRIDO foi declarada na linha 100 da ACBrBoletoW_Caixa

2. DSC_TIPO_HIBRIDO já existia na linha 57 da ACBrBoletoPcnConsts

  Em 29/04/2024 at 17:14, Jhonlenon Ribeiro disse:

01.png

Expandir  

Você não preencheu o nosso número antes de imprimir o boleto:

Nosso Número 3: 00000.0003   
Nosso Número 0: 00000.0000   

  • Consultores
Postado
  Em 29/04/2024 at 17:42, Renato Rubinho disse:

2. DSC_TIPO_HIBRIDO já existia na linha 57 da ACBrBoletoPcnConsts

Expandir  

@Jhonlenon Ribeiro

Falha minha, a alteração da ACBrBoletoPcnConsts.pas existia nos meus fontes, mas ainda não foi para o SVN assim como os demais.
Atualize essa unit junto com as demais, reinstale os componentes, recompile sua aplicação e veja se resolveu.

ACBrBoletoPcnConsts.pasFetching info...

Postado

@Renato Rubinho  Agora ficou 100%...eu que estava vacilando e não estava passando o nosso número, adicionei sua units ACBrBoletoPcnConsts ai funcionou, só um detalhe na unit ACBrBoletoRet_Caixa, eu testei a consulta do boleto e baixa pelo caixa que funcionou também, ai precisava saber o estado da cobrança, se estava EM ABERTO, LIQUIDADO ou BAIXADO, ai adicionei esse linha aqui 

 if leitor.rExtrai(3, 'MENSAGENS') <> '' then
              begin
                Retorno := Leitor.rCampo(tcStr, 'RETORNO');
                // pegar o estado da cobranca
                TituloRet.EstadoTituloCobranca    := Retorno;
              end;

Ai ficou 100%

Eu registrei um boleto em produção que vou enviar no seu e-mail....testei pagando ele pelo qrcode do pix, linha digitavel e codigo de barras, todos funcionário 100%, que bom...mais um boleto hibrido pix no componente ACBrBoleto...

 

  • Curtir 1
  • Consultores
Postado

Olá @Jhonlenon Ribeiro

Que legal, e-mail recebido.

  Em 29/04/2024 at 20:49, Jhonlenon Ribeiro disse:

if leitor.rExtrai(3, 'MENSAGENS') <> '' then
              begin
                Retorno := Leitor.rCampo(tcStr, 'RETORNO');
                // pegar o estado da cobranca
                TituloRet.

Expandir  

Por favor anexe a unit alterada para análise.

Se possível envie por e-mail também o retorno da consulta para podermos validar. 

Mais uma vez, obrigado pela contribuição.

Postado
  Em 29/04/2024 at 21:07, Renato Rubinho disse:

Olá @Jhonlenon Ribeiro

Que legal, e-mail recebido.

Por favor anexe a unit alterada para análise.

Se possível envie por e-mail também o retorno da consulta para podermos validar. 

Mais uma vez, obrigado pela contribuição.

Expandir  

Anexei as 3, mais alterei só a unit ACBrBoletoRet_Caixa...em relação a consulta vou te enviar o retorno no e-mail depois

ACBrBoletoPcnConsts.pasFetching info... ACBrBoletoRet_Caixa.pasFetching info... ACBrBoletoW_Caixa.pasFetching info...

  • Consultores
  • Solution
Postado

 

Implementação enviada ao SVN na Rev-33448

Apenas confirmando, no e-mail você mencionou "Só achei ruim porque não está retornando a LINHA DIGITÁVEL e CÓDIGO DE BARRAS", mas no xml do retorno não constam essas informações conforme destacado a seguir.

Se o erro persistir, acredito que precisará verificar com o banco o motivo dos dados não estarem retornando.

<!-- Sem Código de Barras -->
<CODIGO_BARRAS/>
<!-- Sem Linha digitável -->
<LINHA_DIGITAVEL/>
<!-- Sem Url -->
<URL/>

Validado o retorno com o status e funcionou como o esperado, alimentando o DadosRet.TituloRet.EstadoTituloCobranca e o DadosRet.ControleNegocial.Retorno

Cod_Retorno=00
Msg_Retorno=
Ori_Retorno=CONSULTA_COBRANCA_BANCARIA
HTTP_Result=0
JSON=
indicadorContinuidade=0
proximoIndice=0
  
numeroBoletoBB = 
dataRegistro = 30/12/1899
dataVencimento = 24/05/2024
valorOriginal = 5
carteiraConvenio = 
variacaoCarteiraConvenio = 0
codigoEstadoTituloCobranca = 
estadoTituloCobranca = (0) OPERACAO EFETUADA - SITUACAO DO TITULO = EM ABERTO
contrato = 
dataMovimento = 30/12/1899
dataCredito = 30/12/1899
valorAtual = 0
valorPago = 0
  ---  
  • Consultores
Postado

Obrigado por reportar.

Foi enviado mais um complemento na Rev-33453 preenchendo automaticamente a VersaoDF, na classe de Webservice da Caixa, de acordo com o IndicadorPIX. Sendo True=3.2, False=3.0.

Fechando. Para novas dúvidas, criar um novo tópico.

  • Este tópico foi criado há 476 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...