quilhasoft/jasperphp-openboleto
Composer 安装命令:
composer require quilhasoft/jasperphp-openboleto
包简介
Biblioteca para geração de boletos bancários.
README 文档
README
Considere doar fundos para nos apoiar
O OpenBoleto é uma biblioteca de código aberto para geração de boletos bancários, um meio de pagamento muito comum no Brasil. O foco é ser simples e ter uma arquitetura compatível com os recursos mais modernos do PHP.
Instalação
Composer
Se você já conhece o Composer (o que é extremamente recomendado), simplesmente adicione a dependência abaixo à diretiva "require" seu composer.json:
"openboleto/jasperphp-openboleto": "dev-master"
###PSR-0 autoloader Hoje praticamente qualquer framework utiliza deste padrão, então você deve baixar o OpenBoleto, colocar em uma pasta específica (geralmente lib ou vendor) e procurar na documentação do seu framework para fazer com que o seu autoloader aponte o namespace jasper-php-OpenBoleto para a pasta src do jasperphp-OpenBoleto.
Gerando boletos
// para rodar este exemplo é necessario adicionar no seu composer // "quilhasoft/jasperphp":"dev-master" // "openboleto/openboleto":"dev-master" //require '../autoloader.php'; //require '../../../rctnet/JasperPHP/autoloader.php'; require '../../autoload.php'; // necessario rodar o autoad principal do seu composer para pegar o openboleto, e JasperPHP use OpenBoleto\Banco\Itau; use OpenBoleto\Agente; use JasperPHP\Report; //use JasperPHP\ado\TTransaction; //use JasperPHP\ado\TLoggerHTML; class Boleto { /* Variavel que armazenara os dados do boleto / @var array(); */ private $data = array(); /* * método __set() * executado sempre que uma propriedade for atribuída. */ public function __set($prop, $value) { // verifica se existe método set_<propriedade> if (method_exists($this, 'set_'.$prop)) { // executa o método set_<propriedade> call_user_func(array($this, 'set_'.$prop), $value); } else { if ($value === NULL) { unset($this->data[$prop]); } else { // atribui o valor da propriedade $this->data[$prop] = $value; } } } /* * método __get() * executado sempre que uma propriedade for requerida */ public function __get($prop) { // verifica se existe método get_<propriedade> if (method_exists($this, 'get_'.$prop)) { // executa o método get_<propriedade> return call_user_func(array($this, 'get_'.$prop)); } else { // retorna o valor da propriedade if (isset($this->data[$prop])) { return ($this->data[$prop]); } } } public function __construct($sequencial = null) { // // aqui voce pode acessar sua base de dados e coletar os dados do boleto e preencher os campos abaixo // $sacado = new Agente('Fernando Maia', '023.434.234-34', 'ABC 302 Bloco N', '72000-000', 'Brasília', 'DF'); $cedente = new Agente('Empresa de cosméticos LTDA', '02.123.123/0001-11', 'CLS 403 Lj 23', '71000-000', 'Brasília', 'DF'); $boleto = new Itau(array( // Parâmetros obrigatórios 'dataVencimento' => new DateTime('2013-01-24'), 'valor' => 23.00, 'sequencial' => 12345678, // 8 dígitos 'sacado' => $sacado, 'cedente' => $cedente, 'agencia' => 1724, // 4 dígitos 'carteira' => 112, // 3 dígitos 'conta' => 12345, // 5 dígitos // Parâmetro obrigatório somente se a carteira for // 107, 122, 142, 143, 196 ou 198 'codigoCliente' => 12345, // 5 dígitos 'numeroDocumento' => 1234567, // 7 dígitos // Parâmetros recomendáveis //'logoPath' => 'http://empresa.com.br/logo.jpg', // Logo da sua empresa 'contaDv' => 2, 'agenciaDv' => 1, 'descricaoDemonstrativo' => array( // Até 5 'Compra de materiais cosméticos', 'Compra de alicate', ), 'instrucoes' => array( // Até 8 'Após o dia 30/11 cobrar 2% de mora e 1% de juros ao dia.', 'Não receber após o vencimento.', ), // Parâmetros opcionais //'resourcePath' => '../resources', //'moeda' => Itau::MOEDA_REAL, //'dataDocumento' => new DateTime(), //'dataProcessamento' => new DateTime(), //'contraApresentacao' => true, //'pagamentoMinimo' => 23.00, //'aceite' => 'N', //'especieDoc' => 'ABC', //'usoBanco' => 'Uso banco', //'layout' => 'layout.phtml', //'logoPath' => 'http://boletophp.com.br/img/opensource-55x48-t.png', //'sacadorAvalista' => new Agente('Antônio da Silva', '02.123.123/0001-11'), //'descontosAbatimentos' => 123.12, //'moraMulta' => 123.12, //'outrasDeducoes' => 123.12, //'outrosAcrescimos' => 123.12, //'valorCobrado' => 123.12, //'valorUnitario' => 123.12, //'quantidade' => 1, )); $boleto->getOutput(); $this->data = array_merge($this->data,$boleto->getData()); } /* método para interceptar a requisição e adicionar o codigo html necessario para correta exibição do demostrativo */ public function get_demonstrativo() { return '<table> <tr> <td>'.implode('<br>',$this->data['demonstrativo']). '</td> </tr> <table>'; } /* método para interceptar a requisição e adicionar o codigo html necessario para correta exibição das instrucoes */ public function get_instrucoes() { return '<table> <tr> <td>'.implode('<br>',$this->data['instrucoes']).' </td> </tr> <table>'; } /* este metodo esta aqui para manter compatibilidade do jxml criado para o meu sistema*/ public function get_carteiras_nome() { return $this->data['carteira']; } } // altere aqui para o nome do arquivo de configuração no diretorio config desativado mas pode ser usado por usuarios avançados //JasperPHP\ado\TTransaction::open('dev'); // instancição do objeto :1 parametro: caminho do layout do boleto , 2 parametro : array com os parametros para consulta no banco para localizar o boleto // pode ser passado como paramtro um array com os numeros dos boletos que serão impressos desde que criado sql dentro do arquivo jrxml(desativado nesse exemplo) $report =new JasperPHP\Report("bol01Files/boletoA4.jrxml",array()); JasperPHP\Instructions::prepare($report); // prepara o relatorio lendo o arquivo $report->dbData = array(new Boleto(1),new boleto(2)); // aqui voce pode construir seu array de boletos em qualquer estrutura incluindo $report->generate(); // gera o relatorio $report->out(); // gera o pdf $pdf = JasperPHP\PdfProcessor::get(); // extrai o objeto pdf de dentro do report $pdf->Output('boleto.pdf',"I"); // metodo do TCPF para gerar saida para o browser
Bancos suportados
Atualmente o JasperPHP-OpenBoleto funciona com os bancos suportados pelo openboleto/openboleto:
Toda contribuição é bem vinda. Se você deseja adaptar o JasperPHP-OpenBoleto a algum outro banco, fique à vontade para explorar o código, veja como é bastante simples integrar qualquer banco à biblioteca.
QuilhaSoft/JasperPHP
Biblioteca que gera boletos em PDF atravez de layouts preconstruidos atravez do editor JasperSoft Studio, biblioteca contruida inteiramente em php sem a necessidade de adicionar um servidor JAVA
Um exemplo de utilização esta no arquivo https://github.com/QuilhaSoft/JasperPHP-openboleto/blob/master/samples/itauJasper.php
Amostra de pdf
Tela do editor

Para editar o layout do boleto instale o JasperSoft Studio e abra os arquivos .xlmr na pasta https://github.com/QuilhaSoft/JasperPHP-OpenBoleto/tree/master/app.jrxml/bol01Files
Homologação
Os layouts produzidos nesse exemplo estão Homologados para os bancos Caixa, Itau, Bradesco.
Para usar instale as duas bibliotecas
Licença
- MIT License
quilhasoft/jasperphp-openboleto 适用场景与选型建议
quilhasoft/jasperphp-openboleto 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.58k 次下载、GitHub Stars 达 28, 最近一次更新时间为 2018 年 05 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「jasper」 「boleto」 「boleto bancario」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 quilhasoft/jasperphp-openboleto 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 quilhasoft/jasperphp-openboleto 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 quilhasoft/jasperphp-openboleto 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Projeto para criar arquivos de remessas e processar arquivos de retorno no formato CNAB
Biblioteca para geração de boletos bancários.
JasperStarter is an opensource command line launcher and batch compiler for JasperReports
Jasper reports in PHP
Asaas.com PHP API v3 Wrapper
Gerador de Boleto Sicredi
统计信息
- 总下载量: 9.58k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 29
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-05-28
