eduardokum / laravel-boleto

Pacote para gerar boletos e remessas
MIT License
606 stars 395 forks source link

Geração de boletos registrados / não registrados #40

Closed rodrigopeixotobr closed 7 years ago

rodrigopeixotobr commented 7 years ago

Olá, gostaria de começar elogiando o trabalho realizado.

Estou precisando integrar uma loja online com gerações de boletos pelo Itaú. O meu cliente recebeu do Itaú um manual no qual consta o número de carteira de cobrança 176.

Vi na internet que as empresas agora não conseguem mais gerar boletos sem registro mas vi também que até conseguiria mas precisava ser pago no pago emissor. Estou confuso em qual método utilizar.

O boleto sem registro consegui gerar facilmente, só não sei se ainda está sendo aceito nos bancos. O com registro o funcionamento é este abaixo?

... monta a variável $beneficiario
... monta a variável $pagador 
... monta a variável $boleto
... monta a variável $remessaArray
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Banco\Itau($remessaArray);
$remessa->addBoleto($boleto); // Objeto de boleto gerado, BoletoContract
$remessa->addBoletos($boletos);
return $remessa->gerar();

Este código acima retorna esse resultado:

01REMESSA01COBRANCA 999900999999 ACME 341BANCO ITAU SA 241116 000001 10299999999999999999900999999 0000 000000010000000000000175 I011 24111600000000100003410000001S241116005700000000000000000000000000000000000000000000000000000000000100099999999999CLIENTE RUA UM, 123 BAIRRO 99999999CIDADE UF 24111600 000002 9 000003

Como depois consigo exibir o boleto com registro? Cheguei a ler que o boleto com registro demora para ser emitido e o banco que precisa enviar.

Obrigado desde já por qualquer ajuda.

eduardokum commented 7 years ago

Isso é a remessa pra enviar ao banco para registar o boleto. Para imprimir esse mesmo boleto que você vai registrar é só usar o $boleto->renderPDF(); que ele vai gerar o pdf do boleto Não registrado esquece a partir de 2017 não vai existir mais.

rodrigopeixotobr commented 7 years ago

@eduardokum muito obrigado pelo rápido retorno.

Entendi, vou utilizar só o registrado então. Consegui exibir o boleto. Vê por favor pra mim se este código abaixo está correto para a emissão dos registrados e se é só depois eu trocar pelas informações reais e exibir pro usuário imprimir e ir pagar em qualquer banco.

$beneficiario = new \Eduardokum\LaravelBoleto\Boleto\Pessoa([
    'nome' => 'ACME',
    'endereco' => 'Rua um, 123',
    'cep' => '99999-999',
    'uf' => 'UF',
    'cidade' => 'CIDADE',
    'documento' => '99.999.999/9999-99',
]);
$pagador = new \Eduardokum\LaravelBoleto\Boleto\Pessoa([
    'nome' => 'Cliente',
    'endereco' => 'Rua um, 123',
    'bairro' => 'Bairro',
    'cep' => '99999-999',
    'uf' => 'UF',
    'cidade' => 'CIDADE',
    'documento' => '999.999.999-99',
]);
$boleto = new \Eduardokum\LaravelBoleto\Boleto\Banco\Itau([
    'logo' => realpath(__DIR__ . '/../logos/') . DIRECTORY_SEPARATOR . '341.png',
    'dataVencimento' => new \Carbon\Carbon(),
    'valor' => 100,
    'multa' => false,
    'juros' => false,
    'numero' => 1,
    'numeroDocumento' => 1,
    'pagador' => $pagador,
    'beneficiario' => $beneficiario,
    'carteira' => 112,
    'agencia' => 1111,
    'conta' => 99999,
    'descricaoDemonstrativo' => ['demonstrativo 1', 'demonstrativo 2', 'demonstrativo 3'],
    'instrucoes' =>  ['instrucao 1', 'instrucao 2', 'instrucao 3'],
    'aceite' => 'S',
    'especieDoc' => 'DM',
]);     
$remessaArray = [
    'agencia' => 9999,
    'agenciaDv' => 9, // se possuir
    'conta' => 99999,
    'contaDv' => 9, // se possuir
    'carteira' => 175,
    'convenio' => 9999999, // se possuir
    'range' => 99999, // se possuir
    'codigoCliente' => 99999, // se possuir
    'variacaoCarteira' => 99, // se possuir
    'beneficiario' => $beneficiario,
];      
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Banco\Itau($remessaArray);        
$remessa->addBoleto($boleto);       
return $boleto->renderHTML();

Só de enviar essa remessa a empresa já paga ao banco por registrar o boleto? Muito obrigado mesmo pelo seu trabalho e pela ajuda.

eduardokum commented 7 years ago

Na verdade são 2 momentos distintos, remessa é pra gerar o arquivo pra mandar pro banco, e o boleto é pra imprimir o papel pro cliente, você faz igual exemplos/itau_boleto pra gerar o papel pro cliente e faz igual o exemplos/itau_remessa pra gerar a remessa pra mandar pro banco, lembro que o objeto boletos tem que ser o mesmo se não você envia um boleto diferente do registrado

rodrigopeixotobr commented 7 years ago

Atah, acho que agora estou entendendo melhor. Quando o usuário solicitar pagamento por boleto a ordem seria essa então?

1 - Gerar o $boleto como no exemplos/itau_boleto 2 - Gerar o arquivo $remessa->save() como no exemplos/itau_remessa 3 - A empresa entra no site do Itaú e envia esse arquivo da remessa 4 - O site/empresa pode então enviar o boleto ao cliente 5 - O cliente efetua o pagamento do boleto 6 - A empresa entra no site do Itaú e baixa o arquivo de retorno 7 - A empresa faz o upload do retorno na loja online e é atualizado o status dos boletos

Correto? Reparei que o $remessa->save() do seu exemplo salva um arquivo .txt mas na internet falam que o formato é .rem. Eu posso substituir por .rem ou o banco também aceita o .txt?

Obrigado pelas explicações.

eduardokum commented 7 years ago

Isso mesmo, você pode por a extensão que quiser no fundo tudo é txt só com outra extensão, tem uns bancos que querem extensão específica, só usar a que o banco pede

rodrigopeixotobr commented 7 years ago

Beleza Eduardo, muito obrigado mesmo pela ajuda. Abraço.

IgorDePaula commented 5 years ago

@eduardokum desculpe reabrir o tópico, mas poderia me elucidar um momento? O seu pacote emite boleto registrado?