Ir para conteúdo
  • Cadastre-se

dev botao

Boleto Hibrido Caixa Econômica Federal


Ver Solução Respondido por Renato Rubinho,

Recommended Posts

Boa Tarde , 

 

Sou prestador de serviço junto a caixa e outros Bancos,(empresa VAN) sobre Api Caixa para PIX a caixa não tem nem projeto piloto em andamento, já o boleto hibrido a mesma já esta em fase final do piloto, porem para uso e necessário habilitar na caixa o serviço e utilizar o manual abaixo. 

 

Leiaute_Webservice - MO38239v011.pdf

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

  • Consultores

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

 

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

@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.pas ACBrBoletoRet_Caixa.pas

Link para o comentário
Compartilhar em outros sites

  • Consultores

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 [email protected] para analisarmos? Mencione este tópico para identificarmos o assunto. 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Consultores
11 minutos atrás, 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', '');

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

22 minutos atrás, Jhonlenon Ribeiro disse:

01.png

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   

Link para o comentário
Compartilhar em outros sites

  • Consultores
29 minutos atrás, Renato Rubinho disse:

2. DSC_TIPO_HIBRIDO já existia na linha 57 da ACBrBoletoPcnConsts

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

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá @Jhonlenon Ribeiro

Que legal, e-mail recebido.

15 minutos atrás, Jhonlenon Ribeiro disse:

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

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.

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, 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.

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.pas ACBrBoletoRet_Caixa.pas ACBrBoletoW_Caixa.pas

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

 

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
  ---  
Link para o comentário
Compartilhar em outros sites

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.