melolucas / jasperphp-openboleto
银行汇票生成库。
Requires
- php: >=5.3.0
- openboleto/openboleto: dev-master
- quilhasoft/jasperphp: dev-master
This package is auto-updated.
Last update: 2024-09-09 18:49:00 UTC
README
OpenBoleto是一个开源的银行汇票生成库,是巴西非常常见的一种支付方式。该库的重点是简单易用,并兼容PHP的最新功能。
安装
Composer
如果您已经熟悉Composer(强烈推荐),只需将以下依赖项添加到composer.json文件中的"require"指令。
"quilhasoft/jasperphp-openboleto": "dev-master"
###PSR-0自动加载器目前几乎任何框架都使用这个标准,因此您需要下载OpenBoleto,将其放入特定文件夹(通常是lib或vendor),然后在框架文档中查找如何配置自动加载器,使其将命名空间jasper-php-OpenBoleto指向jasperphp-OpenBoleto的src文件夹。
生成汇票
// 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
支持的银行
目前JasperPHP-OpenBoleto与openboleto/openboleto支持的银行兼容。
欢迎所有贡献。如果您想将JasperPHP-OpenBoleto适配到其他银行,请随意探索代码,了解如何轻松地将任何银行集成到库中。
QuilhaSoft/JasperPHP
JasperPHP是一个生成PDF汇票的库,通过JasperSoft Studio预先构建的布局实现。这是一个完全用PHP编写的库,无需添加JAVA服务器。示例用法在https://github.com/QuilhaSoft/JasperPHP-openboleto/blob/master/samples/itauJasper.php中。PDF示例编辑器界面
要编辑汇票布局,请安装JasperSoft Studio并打开https://github.com/QuilhaSoft/JasperPHP-OpenBoleto/tree/master/app.jrxml/bol01Files文件夹中的.xlmr文件。
认证
示例中生成的布局已通过Caixa、Itau和Bradesco银行的认证。
要使用,请安装两个库
许可协议
- MIT许可证