Looking to hire Laravel developers? Try LaraJobs

laravel-boleto maintained by marcuscampos

Description
Biblioteca com boletos para o laravel
Last update
2017/10/17 17:31 (dev-patch-1)
License
Downloads
26

Comments
comments powered by Disqus

Packagist Packagist Packagist Scrutinizer Code Quality Build Status Scrutinizer Code Quality Code Coverage Build Status GitHub forks

Laravel Boleto

Pacote para gerar boletos, remessas e leitura de retorno.

Para dúvidas ou sugestões utilize o nosso grupo de discussão

Requerimentos

Links

Bancos suportados

Banco Boleto Remessa 400 Remessa 240 Retorno 400 Retorno 240
Banco do Brasil :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark:
Bancoob (Sicoob) :white_check_mark: * :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark: *
Banrisul :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark:
Bradesco :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark:
Caixa :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark:
Hsbc :white_check_mark: :white_check_mark: :white_check_mark:
Itau :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark:
Santander :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark: :white_check_mark:
Sicredi :white_check_mark: :white_check_mark: :white_check_mark: * :white_check_mark: *
Banco do Nordeste :white_check_mark: * :white_check_mark: *

* necessita de homologação

Instalação

Via composer:

composer require eduardokum/laravel-boleto

Ou adicione manualmente ao seu composer.json:

"eduardokum/laravel-boleto": "dev-master"

Gerar boleto

Criando o beneficiário ou pagador

$beneficiario = new \Eduardokum\LaravelBoleto\Pessoa([
    'nome' => 'ACME',
    'endereco' => 'Rua um, 123',
    'cep' => '99999-999',
    'uf' => 'UF',
    'cidade' => 'CIDADE',
    'documento' => '99.999.999/9999-99',
]);

$pagador = new \Eduardokum\LaravelBoleto\Pessoa([
    'nome' => 'Cliente',
    'endereco' => 'Rua um, 123',
    'bairro' => 'Bairro',
    'cep' => '99999-999',
    'uf' => 'UF',
    'cidade' => 'CIDADE',
    'documento' => '999.999.999-99',
]);

Criando o objeto boleto

Campos númericos e suas funções

  • numero: campo numérico utilizado para a criação do nosso numero. (identificação do título no banco)*
  • numeroControle: campo de livre utilização. até 25 caracteres. (identificação do título na empresa)
  • numeroDocumento: campo utilizado para informar ao que o documento se referente (duplicata, nf, np, ns, etc...)
$boletoArray = [
	'logo' => 'path/para/o/logo', // Logo da empresa
	'dataVencimento' => new \Carbon\Carbon('1790-01-01'),
	'valor' => 100.00,
	'multa' => 10.00, // porcento
	'juros' => 2.00, // porcento ao mes
	'juros_apos' =>  1, // juros e multa após
	'diasProtesto' => false, // protestar após, se for necessário
	'numero' => 1,
	'numeroDocumento' => 1,
	'pagador' => $pagador, // Objeto PessoaContract
	'beneficiario' => $beneficiario, // Objeto PessoaContract
	'agencia' => 9999, // BB, Bradesco, CEF, HSBC, Itáu, Santander
	'agenciaDv' => 9, // se possuir
	'conta' => 99999, // BB, Bradesco, CEF, HSBC, Itáu, Santander
	'contaDv' => 9, // Bradesco, HSBC, Itáu
	'carteira' => 99, // BB, Bradesco, CEF, HSBC, Itáu, Santander
	'convenio' => 9999999, // BB
	'variacaoCarteira' => 99, // BB
	'range' => 99999, // HSBC
	'codigoCliente' => 99999, // Bradesco, CEF, Santander
	'ios' => 0, // Santander
	'descricaoDemonstrativo' => ['msg1', 'msg2', 'msg3'], // máximo de 5
	'instrucoes' =>  ['inst1', 'inst2'], // máximo de 5
	'aceite' => 1,
	'especieDoc' => 'DM',
];

$boleto = new \Eduardokum\LaravelBoleto\Boleto\Banco\Bb($boletoArray);

Gerando o boleto

Gerando o boleto a partir da instância do objeto (somente um boleto)

$boleto->renderPDF();
// ou
$boleto->renderHTML();

// Os dois métodos aceitam como parâmetro dois booleanos.
// 1º Se True, após renderizado, irá mostrar a janela de impressão. O Valor default é false.
// 2º Se False, irá esconder as instruções de impressão. O valor default é true.
$boleto->renderPDF(true, false); // mostra a janela de impressão e esconde as instruções de impressão
/*
 * O comportamento padrão para os métodos renderPDF() e renderHTML() é retornar uma string pura.
 * Para gerar um retorno no controller do laravel, utilize da seguinte forma:
 */

// PDF
return response($boleto->renderPDF(), 200, [
    'Content-Type' => 'application/pdf',
    'Content-Disposition' => 'inline; boleto.pdf',
]);

// HTML
return response($boleto->renderHTML());

Gerando boleto a partir da instância do render

// Gerar em PDF
$pdf = new Eduardokum\LaravelBoleto\Boleto\Render\Pdf();

$pdf->addBoleto($boleto);
// Ou, para adicionar um array de boletos
$pdf->addBoletos($boletos);

// Quando não informado parâmetros ele se comportará como Pdf::OUTPUT_STANDARD, enviando o buffer do pdf com os headers apropriados.
$pdf->gerarBoleto();

// Para mostrar a janela de impressão no load do PDF
$pdf->showPrint();

// Para remover as intruções de impressão
$pdf->hideInstrucoes();

// O método gerarBoleto() da classe PDF aceita como parâmetro:
//	1º destino: constante com os destinos disponíveis. Ex: Pdf::OUTPUT_SAVE.
//	2º path: caminho absoluto para salvar o pdf quando o destino for Pdf::OUTPUT_SAVE.
//Ex:
$pdf->gerarBoleto(Pdf::OUTPUT_SAVE, storage_path('app/boletos/meu_boleto.pdf')); // salva o boleto na pasta.
$pdf_inline = $pdf->gerarBoleto(Pdf::OUTPUT_STRING); // retorna o boleto em formato string.
$pdf->gerarBoleto(Pdf::OUTPUT_DOWNLOAD); // força o download pelo navegador.

// Gerar em HTML
$html = new Eduardokum\LaravelBoleto\Boleto\Render\Html();
$html->addBoleto($boleto);
// Ou para adicionar um array de boletos
$html->addBoletos($boletos);

// Para mostrar a janela de impressão no load da página
$html->showPrint();

// Para remover as intruções de impressão
$html->hideInstrucoes();

$html->gerarBoleto();

Gerar remessa

$remessaArray = [
	'agencia' => 9999,
	'agenciaDv' => 9, // se possuir
	'conta' => 99999,
	'contaDv' => 9, // se possuir
	'carteira' => 99,
	'convenio' => 9999999, // se possuir
	'range' => 99999, // se possuir
	'codigoCliente' => 99999, // se possuir
	'variacaoCarteira' => 99, // se possuir
	'beneficiario' => $beneficiario,
];

$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Bb($remessaArray);

// Adicionar um boleto
$remessa->addBoleto($boleto);

// Ou para adicionar um array de boletos
$boletos = [];
$boletos[] = $boleto1;
$boletos[] = $boleto2;
$boletos[] = $boleto3;
$remessa->addBoletos($boletos);

echo $remessa->gerar();

Tratar retorno

$retorno = \Eduardokum\LaravelBoleto\Cnab\Retorno\Factory::make('full_path_arquivo_retorno');
$retorno->processar();
echo $retorno->getBancoNome();

// Retorno implementa \SeekableIterator, sendo assim, podemos utilizar o foreach da seguinte forma:
foreach($retorno as $registro) {
	var_dump($registro->toArray());
}

// Ou também podemos:
$detalheCollection = $retorno->getDetalhes();
foreach($detalheCollection as $detalhe) {
	var_dump($detalhe->toArray());
}

// Ou até mesmo do jeito laravel
$detalheCollection->each(function ($detalhe, $index) {
    var_dump($detalhe->toArray())
});

Métodos disponíveis:

$retorno->getDetalhes();

$retorno->getHeader();

$retorno->getTrailer();