Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diegohamaz1

Ajuda Open Boleto

Recommended Posts

Gente por favor me ajudem !

Eu estou tentando homologar um boleto bradesco , no banco e eles já reprovaram umas 10 vezes minha linha digitavel e o meu nosso numero alguem tem conhecimento pra me ajudar???

Estou fazendo assim aonde criar o boleto, passo o nosso numero com 11 digitos mas apenas completando o id do boleto

$nossoNum = $idBoleto;
$nossoNum_INT = str_pad($nossoNum, 11, '0', STR_PAD_LEFT); 


$boleto = new Bradesco(array(
                		
'dataVencimento' => new DateTime($diaVencimento),
'valor' => $dadosPagamento[0]->valor_bruto,
'sequencial' => $nossoNum_INT, // Até 11 dígitos

O banco disse que minha carteira é 9 e meu digito verificador é modulo 11 com base 7

Só que estava vendo a classe de linha digitavel e esta totalmente diferente , não sei o que passar no começo do open boleto , tento tratar na classe abstrata e nada

Metodo da linha digitavel

    public function getLinhaDigitavel()
    {
        $chave = $this->getCampoLivre();

        // Break down febraban positions 20 to 44 into 3 blocks of 5, 10 and 10
        // characters each.
        $blocks = array(
            '20-24' => substr($chave, 0, 5),
            '25-34' => substr($chave, 5, 10),
            '35-44' => substr($chave, 15, 10),
        );

        // Concatenates bankCode + currencyCode + first block of 5 characters and
        // calculates its check digit for part1.
        $check_digit = static::modulo10($this->getCodigoBanco() . $this->getMoeda() . $blocks['20-24']);

        // Shift in a dot on block 20-24 (5 characters) at its 2nd position.
        $blocks['20-24'] = substr_replace($blocks['20-24'], '.', 1, 0);

        // Concatenates bankCode + currencyCode + first block of 5 characters +
        // checkDigit.
        $part1 = $this->getCodigoBanco(). $this->getMoeda() . $blocks['20-24'] . $check_digit;

        // Calculates part2 check digit from 2nd block of 10 characters.
        $check_digit = static::modulo10($blocks['25-34']);

        $part2 = $blocks['25-34'] . $check_digit;
        // Shift in a dot at its 6th position.
        $part2 = substr_replace($part2, '.', 5, 0);

        // Calculates part3 check digit from 3rd block of 10 characters.
        $check_digit = static::modulo10($blocks['35-44']);

        // As part2, we do the same process again for part3.
        $part3 = $blocks['35-44'] . $check_digit;
        $part3 = substr_replace($part3, '.', 5, 0);

        // Check digit for the human readable number.
        $cd = $this->getDigitoVerificador();

        // Put part4 together.
        $part4  = $this->getFatorVencimento() . $this->getValorZeroFill();
	
        
        // Now put everything together.
        return "$part1 $part2 $part3 $cd $part4";
    }

Alguem pra me dar uma luz uma direção proque nao sei o que fazer ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro ponto, você tem certeza que o projeto dá suporte à sua carteira?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que sim porque estou em homologação com o banco e apenas o nosso numero nao bate .

Fiz essa correção no codigo

https://github.com/kriansa/openboleto/issues/22

public function setSequencial( $sequencial )
    {
        $modulo11 = $this->modulo11( str_pad( $sequencial, 11, 0, STR_PAD_LEFT ), 7 );
        $this->digitoAutoConferencia = $modulo11['resto'] != 1 ? $modulo11['digito'] : 'P';
        $this->sequencial = $sequencial;
        return $this;
    }
    /**
     * Define nomes de campos específicos do boleto do Bradesco
     *
     * @return array
     */
    public function getViewVars()
    {
        return array(
            'cip' => self::zeroFill($this->getCip(), 3),
            'mostra_cip' => true,
            'nosso_numero' =>
                str_pad( $this->getCarteira(), 2, 0, STR_PAD_LEFT ) . '/' .
                str_pad( $this->getNossoNumero(), 11, 0, STR_PAD_LEFT ) . '-' .
                $this->digitoAutoConferencia
        );
    }

E o digito verificador ainda está errado e adaptar a linha digitavel tambem..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que sim porque estou em homologação com o banco e apenas o nosso numero nao bate .

Pesquisa rápida, segundo seu post, sua carteira é a 9, ou seja, com registro (https://suporte.contaazul.com/customer/portal/articles/1016424-qual-os-tipos-de-carteira-dos-bancos-), se você ler os comentários do autor:

https://garajau.com.br/projects/openboleto-geracao-de-boletos-em-php/

Vai ver que ele disse que não funciona com carteira com registro. Esse é motivo do nosso número e por consequência linha digitável/código de barras não funcionar.

Você terá que pegar o manual do banco e verificar o que é eles requisitam para gerar isso tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por asonoda
      Boa tarde a todos.
      Estou precisando registrar os boletos no banco Bradesco e Santander utilizando o webservices que eles disponibilizaram.
      Procurei e não encontrei nenhum exemplo ou artigo falando técnicamente como se faz a conexão e a utilização do serviço.
      O Bradesco me parece mais complicado pois tem que assinar o Json com o certificado privado (PKCS#7) e transformar em Base64 antes de transmitir para o Bradesco via Webservices.
      O Santander ainda não analisei diretiro como é feito a comunicação para envio do registro.
      Alguém já fez isso ou algo parecido para me ajudar. Pode ser em Java, PHP ou Oracle (PL/SQL).
      Obrigado a todos pela atenção.
    • Por asonoda
      Boa tarde a todos.
      Estou precisando registrar os boletos no banco Bradesco e Santander utilizando o webservices que eles disponibilizaram.
      Procurei e não encontrei nenhum exemplo ou artigo falando técnicamente como se faz a conexão e a utilização do serviço.
      O Bradesco me parece mais complicado pois tem que assinar o Json com o certificado privado (PKCS#7) e transformar em Base64 antes de transmitir para o Bradesco via Webservices.
      O Santander ainda não analisei diretiro como é feito a comunicação para envio do registro.
      Alguém já fez isso ou algo parecido para me ajudar. Pode ser em Java, PHP ou Oracle (PL/SQL).
      Obrigado a todos pela atenção.
    • Por asonoda
      Boa tarde a todos.
      Estou precisando registrar os boletos no banco Bradesco.
      Porém não encontrei nada, referindo-se a assinatura que tenho que fazer com o certificado da empresa e transformar base64 antes de transmitir.
      Beleza, Base64 é tranquilo o problema mesmo é como assinar o Json com o certificado privado (PKCS#7) antes de transmitir para o Bradesco via Webservices.
      Alguém já fez isso ou algo parecido para me ajudar. Pode ser em Java ou Oracle (PL/SQL).
      Obrigado a todos pela atenção.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.