Code Monkey home page Code Monkey logo

openboleto's Introduction

OpenBoleto

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.

Se esse projeto te auxiliou de alguma forma, você pode contribuir financeiramente para que eu possa continuar a desenvolver projetos open source. As contribuições podem ser:

Ajude o Projeto a continuar, faça uma doação no PIX!

b230c7a8-8743-459f-bae5-541ea46a3533

302100763-dc530122-d9fb-41e4-9edf-dc9c32e74adc

Instalação

Composer

Se você já conhece o Composer (o que é extremamente recomendado), simplesmente adicione a dependência abaixo à diretiva "require" em seu composer.json:

"openboleto/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 OpenBoleto para a pasta src do OpenBoleto.

Stand-alone library

Se você quer simplesmente baixar e dar um include, também é muito simples. Primeiro baixe (ou dê clone no repositório), e coloque em uma pasta específica. Depois, dê um include no arquivo autoloader.php e voilà!

Gerando boletos

Essa é a melhor parte. Não poderia ser mais simples, veja um exemplo básico:

use OpenBoleto\Agente;
use OpenBoleto\Banco\BancoDoBrasil;

$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 BancoDoBrasil(array(
    // Parâmetros obrigatórios
    'dataVencimento' => new DateTime('2013-01-24'),
    'valor' => 23.00,
    'sequencial' => 1234567, // Para gerar o nosso número
    'sacado' => $sacado,
    'cedente' => $cedente,
    'agencia' => 1724, // Até 4 dígitos
    'carteira' => 18,
    'conta' => 10403005, // Até 8 dígitos
    'convenio' => 1234, // 4, 6 ou 7 dígitos
    'qrCode' => 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net', // Caso o Boleto tenha registro para uso de QrCode Pix
));

echo $boleto->getOutput();

Como adiquirir o QrCode Pix

O uso padrão do PIX não pode ser usado no boleto, à instituição bancária tem um serviço da qual você passa o boleto registrado e solicita a PIX, o banco vai te retornar uma string na qual é o PIX que identifica o boleto, para quando realizar o pagamento via PIX, tenha referência do boleto para ser baixado.

Sim, só isso! Lembre-se de que cada banco possui alguma particularidade, mas em geral são estes parâmetros os obrigatórios. Na pasta samples existe um exemplo funcional de cada banco, você pode verificar lá quais são os parâmetros necessários para cada banco.

Bancos suportados

Atualmente o OpenBoleto funciona com os bancos abaixo:

Banco Situação HTML Situação JasperPHP(PDF)
Banco de Brasília (BRB) Beta Beta
Banco do Brasil Homologado Homologado
Banco do Nordeste Beta Beta
Banese Beta Beta
Bradesco Homologado Homologado
Caixa (SIGCB) Beta Homologado
Cecred Beta Beta
HSBC Beta Beta
Itaú Beta Homologado
Santander Beta Beta
Sicoob Beta Beta
Unicred Homologado Beta
Viacredi Beta Beta
Sicredi Beta Beta
Banrisul Beta Beta
C6 Bank Homologado Homologado
ABC Homologado Homologado
BV -- BETA

API Banco Inter

O Banco Inter está disponibilizando uma API para emissão de boletos. O projeto ctodobom/APInter-PHP implementa funções para facilitar o acesso à essa API.

Integração com QuilhaSoft/JasperPHP

QuilhaSoft/JasperPHP é uma biblioteca puro PHP, que gera o boleto no formato PDF sem conversão do HTML, o layout do boleto pode ser editado com o JasperSoft Studio

Para ver funcionando abra o exemplo em https://github.com/QuilhaSoft/JasperPHP-OpenBoleto

Toda contribuição é bem vinda. Se você deseja adaptar o OpenBoleto a algum outro banco, fique à vontade para explorar o código, veja como é bastante simples integrar qualquer banco à biblioteca.

Remessa e Retorno

https://github.com/QuilhaSoft/OpenCnabPHP

Licença

  • MIT License

openboleto's People

Contributors

angelorodem avatar brunoqueiros avatar chrisbckr avatar cristianoteles avatar dadeke avatar eerison avatar eliseuvidal0 avatar erickmff avatar evaldoprestes avatar fabioginzel avatar fabriciolangermt avatar fredroo avatar gersonfs avatar gildonei avatar joao-bittencourt avatar joaovictorsarzi avatar juliosborchia avatar kriansa avatar leonardola avatar lucasnpinheiro avatar lucioabrantes avatar nicolahsss avatar pedrorav avatar raphaelgiovanini avatar rauye avatar rctnet avatar rodrigotavio91 avatar vjnrv avatar warquia avatar wgrafael avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openboleto's Issues

Banco Inter

Alguém já desenvolveu para o banco Intermedium?
www.intermedium.com.br

Alguém pode me ajudar se ainda não tiver nada na comunidade?

A conta digital dele é isenta de qualquer tarifa ;)

Release plx!

I'm currently using the "Caixa" class wich is only available in master branch. Can u tag a new stable release?

Criar validação de input

Atualmente a validação do input é feita pelo método BoletoAbstracto::zeroFill, porém esta não é a função dele.

Gerar linha digitável a partir do código de barras

Olá,

Uso uma API de pagamentos que me retorna a linha digitável do boleto, a partir dela eu preciso gerar o código de barras. Existe uma forma de eu fazer isso com o OpenBoleto, ou seja, ele me retornar o código de barras a partir de uma linha digitável?

Obrigado!

DV - Banco do Brasil - Erro

Olá,
Estou tendo problemas com a geração do boleto para o Banco do Brasil, a linha digitável esta 100%, porém quando vai gerar o nosso número ele não coloca o DV, mas quando solicito a segunda via no banco do brasil ele possui o DV.
Ex:
Banco do Brasil : 12345670000111111-2
OpenBoleto : 12345670000111111

Alguém pode me ajudar?

Comentar que não deve começar o valor da Agencia com 00. Ex: 0040

Na minha cidade a agencia Santander aparece nos documentos como 0040 e sem digito. Seria bom comentar que não devemos colocar o 00 no arquivo onde definimos a agencia que vai receber. No meu caso, não aparecei até tirar o 00 do 0040. Outras cidades vi que são 4 dígitos completos. E: Agencia 2535. Nestes casos não dá erro.

Classe Caixa SICOB

Boa tarde,

Criei uma classe para boletos da Caixa SICOB, utilizando a classe da caixa já existente. Se puder verificar por favor...

#45

Boleto BRB

Pessoal preciso do boleto do BRB. Alguem tem ou o projeto tem?

Banco SICOOB

Boa noite,

Gostaria de implementar boleto para o Banco SICOOB, qual seria o caminho ?

Digito verificador nosso número da caixa

Olá, estava usando o seu modulo em uma aplicação, e gostei muito do formato. Muito simples de aplicar. Já trabalhei com o código puro do boletos php e sei como falta organização.
Mas estava observando a geração do digito do nosso numero, e estava sempre vindo 8. Fiz o teste com os mesmos valores com o codigo original do boletos php e retornava 1. E também sempre varia. Mas o do seu módulo esta mantendo sempre 8.
Fui procurar a solução, e vi que na função geraNossoNumero() da Caixa esta passando para a função modulo11() apenas o numero baseado na carteira (24 ou 14), enquanto no código original é passado este mesmo numero mais o sequencial fornecido no código. Por exemplo:
Se o meu sequencial é 222 e minha carteira é SR, o parametro da função modulo11() deveria ser 24.zeroFill(222, 15), que ai retornaria o digito correto, e não 8 como esta retornando sempre.
Acredito que não seja engano meu, pois se vc passar sempre 24 para o modulo11(), o retorno nunca vai variar.
Da uma conferida ai e parabéns pelo ótimo trabalho.
Abraço

Problemas ao validar boleto pelo bradesco

Olá,

Primeiro queria agradecer o incrível trabalho de todos os envolvidos nesse projeto. Ficou melhor e mais fácil trabalhar com boletos com o projeto de vocês.

Estou tento problemas com o boleto do Bradesco. No momento de homologar o boleto pelo banco (no caso Bradesco) o mesmo fez a seguinte consideração:

"Campo nosso número: deve ser composto por carteira, onze caracteres e dígito EX.: ( 09/ XXXXXXXXX11-9 )"

O método que deveria gerar o nosso número apenas retorna o sequencial:
https://github.com/kriansa/openboleto/blob/master/src/OpenBoleto/Banco/Bradesco.php#L86

Esse método não deveria gerar o nosso número como descrito acima? Eu fiz algumas modificações no código, estou aguardando o banco homologar. Assim que isso acontecer faço um pull request.

Desconto

Quando o boleto for emitido e o emissor desejar oferecer um desconto para o cliente que pagar antecipado, essa informação será destacada no campo descontos/abatimentos no espelho do boleto? Ou devo informar esses dados apenas no arquivo remessa?

Envio de remessa automático

Olá,

Normalmente os clientes que utilizam boleto enviam suas remessas manualmente pelo aplicativo disponibilizado pelo banco. Existe a possibilidade do envio da remessa ser automático? Como fazer? Alguém aqui faz a transferência da remessa automática para o banco?

Boleto Caixa Carteira Registrada

Boa tarde,

Preciso fazer as alterações para aceitar a carteira CR na caixa, e também inserir o CPF/CNPJ do sacado na ficha de compensação, o que acha, alterar direto, ou criar um novo partial para a ficha de compensação com CPF/CNPJ do sacado?

Fork do openboleto em JS

Caros,

Peço desculpas por não estar tão ativo atualmente no projeto, mas a desculpa é na verdade uma boa notícia: estou migrando o OpenBoleto para JS, com o intuito de não somente funcionar diretamente do browser (ou do nodejs) mas também fazer integrações com todas as linguagens de programação possíveis.

Outra novidade é que já iniciei o trabalho nos arquivos de retorno, e já tenho 5 bancos homologados.

Ainda não tenho um nome definido para esse novo projeto, mas a idéia é que como ele também terá integração com o PHP, eu descontinue o OpenBoleto em prol deste novo.

Assim que tiver alguma versão funcional, estarei liberando o projeto no github e linkando aqui.

Estou aberto à sugestões.
Abraços!

Lançar versão stable

Todo:

  • Criar testes básicos
  • Rever a classe BoletoFactory (métodos em inglês deveriam ser em português?)
  • Método getNossoNumero deve ser repensado para evitar repetição

Call for maintainers

Como é de conhecimento público, este projeto está abandonado.

Por diversos motivos, não consegui dar o merecido esforço para mantê-lo, mesmo sabendo que está sendo utilizado por diversas pessoas.

Por respeito ao projeto e às pessoas que o utilizam, e com o objetivo de centralizar os esforços de manutenção em um repositório apenas, estou abrindo este call for maintainers para que outras pessoas mais ativas possam dar continuidade.

Tecnicamente, o que muda?

Teremos uma nova organização no Github, desassociada do meu handle, onde os membros administradores terão a responsabilidade de escrita no repositório.

Os membros iniciais deste time serão escolhidos pelo seu comprometimento com o projeto, como por exemplo, quantidade e qualidade das novas funcionalidades implementadas.

Como me "candidatar"?

Primeiramente é esperado que você:

  • Tenha conhecimento técnico para desenvolver e tomar decisões para o projeto;
  • Tenha contribuído através de Pull Requests, comentários, etc;

Me envie um email (daniel arroba garajau.com.br) se apresentando, com seu ID no Github e seu Fork para que possamos trocar uma ideia. Não será nada formal, fique tranquilo! 😄

Espero que com essas ações o projeto possa continuar, independente das pessoas envolvidas. Muito obrigado pela paciência ao longo desses anos.

Composer?

Oi pessoal boa tarde tudo bom?

Eu gostaria de usar somente o boleto do Banco do Brasil, então ñão queria subir pro meu servidor arquivos de outros bancos para ficar ocupando espaço... posso apagar outras pastas?

Pra mim esse tal de composer pode até facilitar a vida, mas fica muito lixo perdido pro meio

Boleto Banco do Brasil

Olá,

No boleto do Banco do Brasil é obrigatório a indicação no campo Carteira do código de variação da carteira? Por exemplo, um cliente que temos aqui ele emite boleto pelo software do banco e no campo carteira vem assim 17/19. Essa indicação da variação é obrigatória? Como fazer isso no openboleto?
Grato pela atenção.

Tamanho do número da conta Santander é maior que 7

Estou usando o OpenBoleto para gerar boletos do Santander.
No meu caso a conta do cliente tem 9 números + 1 o dígito, o que impossibilita a geração, já que o máximo permitido é 7.
Alguém tem a solução para esse problema?

Layouts Homologados

Coloquem nos comentários os bancos que por ventura tenham homologado com esta biblioteca e o tipo de visualização do boleto se HTML ou JasperPHP

Código de movimentação de remessa

No Manual de Procedimentos Operacionais para Troca de Arquivos – Cobrança Bradesco existe uma lista que identifica as ocorrências na remessa, por exemplo:

01..Remessa
02..Pedido de baixa
etc

A minha dúvida é a seguinte, essa relação de códigos é comum a todos os bancos?

Método para retornar o Nosso Número completo.

Daniel,

Hoje não é possível pegar o Nosso Número completo do Boleto na instância, pelo que vi na lib, ele só é disponibilizado na view.

Queria sua opinião sobre a criação de um método abstrato chamado getNossoNumeroBoleto() na classe BoletoAbstract, onde as classes dos bancos terão esse método implementado com sua lógica.

Por exemplo, a classe Itau ficaria assim:

public function getNossoNumeroBoleto()
{
    return self::zeroFill($this->getCarteira(), 3) . '/' . self::zeroFill($this->getNossoNumero(), 8) . '-' . $this->carteiraDv;
}

public function getViewVars()
{
    return array(
        'carteira' => null, // Campo não utilizado pelo Itaú
        'nosso_numero' => $this->getNossoNumeroBoleto(),
    );
}

Proposta - Código de barra impresso no formato de imagem

Seria muito complicado ter a opção de gerar o código de barra no formato de imagem?

Neste formato atual, que usa CSS, o software que uso no Linux para a geração do PDF, por algum motivo, atrapalha o tamanho da fonte, fazendo com que a linha digitável seja lida errada. Se fosse uma imagem (sequência de imagens com largura pré-definida), não teria esse problema.

Problema com boleto Sicredi

Olá pessoal,

Estou tendo problemas ao gerar boleto com o Sicredi.

Desde o início do código de barras (linha digitável) os números já não da certo.

Percebi que dentre os parâmetros obrigatórios também estava faltando a dataVencimento que adicionei na lista para dar certo.

Alguém já passou por problemas com o Sicredi? Pode ajudar?

Agradeço

Erro na verificação dentro do BoletoAbstract->getAgenciaCodigoCedente()

Olá, acho que tem um erro no método abaixo:

/**
 * Retorna o campo Agência/Cedente do boleto
 *
 * @return string
 */
public function getAgenciaCodigoCedente()
{
    $agencia = $this->getAgenciaDv() ? $this->getAgencia() . '-' . $this->getAgenciaDv() : $this->getAgencia();
    $conta = $this->getContaDv() ? $this->getConta() . '-' . $this->getContaDv() : $this->getConta();
    return $agencia . ' / ' . $conta;
}

$this->getAgenciaDv() ? e $this->getContaDv() ? verificam se têm DVs ou não. Mas e se o dígito verificador for setado em 0(zero)? O método acaba retornando a agência e conta de forma errada e consequentemente deixando a apresentação do boleto incompleta sem os DVs.

[]s

Nosso numero banco bradesco

Pessoal,

Estou com problema para homologar o boleto junto ao banco bradesco, tenho as seguinte duvidas
1) Nesse trecho posso passar só o id do meu boleto ou tenho que completar com 11 zeros??

            $numerodocumento = $idBoleto;
            $boleto = new Bradesco(array(
                    // Parâmetros obrigatórios
                    'dataVencimento' => new DateTime($diaVencimento),
                    'valor' => $dadosPagamento[0]->valor_bruto,
                    'sequencial' => $numerodocumento , 
  1. Fiz os ajustes propostos aqui
    #22
    já soluciona o problema?

  2. O digito verificador do nosso número esta errado na linha digitavel, a atendente me disse que é modulo 11 com base 7 , seto ele no bradesco.php mesmo , onde posso setá-lo? Não alterei nada no abstract pra rodar...

Com a correção do johnny meu numero de boleto ficou assim

09/00000000133-3
Linha digitavel
23796.65508 90000.000019 33000.221004 3 69360000001990

Pela minha conta já nao bateu o digito verificador que devia ser 6 nesse caso..

Por enquanto é isso...
Obrigado !!

Como configurar os Carnês, me ajudem por favor

Olá Colegas estou tentando configurar os carnês mas está sem sucesso.
eu coloco o banco de dados no arquivo dev.ini
mas gera erro: Fatal error: Uncaught exception 'JasperPHP\ado\Exception' with message 'Arquivo 'jasperphp/config/dev.ini'

outra coisa não consigo configurar o carnê igual o boleto sem acessar banco de dados, só para teste?
Obrigado!

Layout Boleto Caixa

O layout do boleto registrado Caixa não está nos padrões do manual de especificações técnicas da Caixa (Página 12).
Manual Boletos Caixa.pdf

Na ficha de compensação, logo acima do código de barras, os dados do pagador estão incompletos, está faltando o CPF/CNPJ, UF e CEP. Logo após vem os dados do Sacador/Avalista, que também não consta no boleto.

Boleto em branco servidor

Boa tarde galera,

Na minha maquina local o boleto esta rodando corretamente.
Porem quando subo ele pra meu servidor online ele fica em branco.
Pelo que reparei é a partir da instancia do Banco do Brasil.

Alguma ideia?

Servidor PHP 5.6.31 mesma versão do meu wamp.

Grato!

cpf/cnpj faltando no campo cedente dos boletos da caixa

@zardo @kriansa ao tentar homologar com a caixa econômica federal recebi o problema a seguir

  • CNPJ/CPF deve estar impresso ao lado do nome do cedente na ficha de compensação no SIGCB.

captura de tela 2015-04-10 as 14 14 52

Conforme item 4.2.3.1 do manual de especificações o campo cedente deveria conter o cnpj/cpf do cedente. Além disso o campo deveria se chamar beneficiário ficando como abaixo

captura de tela 2015-04-10 as 14 18 15

Passar o boleto para PDF ?

quando converto o html para pdf usando a mpdh o codigo de barras some teria alguma maneira de gerar um pdf dos boletos?

Gerar Boleto já Registrado

É possível gerar um boleto já registrado?

Há o caso aqui na empresa em que trabalho que enviamos o CNAB 240 para o Sicoob e o nosso número é gerado por eles e retornado a nós no arquivo retorno, caso eu queira imprimir uma segunda via localmente é possível?

Estou perguntando, pois quando gero o boleto, o mesmo exibe o digito do nosso número diferente do registrado pelo banco.

Carteira é sobrescrita no boleto itau

o elemento carteira é sobrescrito com undefined na linha 122 do arquivo BoletoAbstract.php
pelo metodo getViewVars(),somente para boleto Itau, alguém sabe como resolver?

Boleto Bradesco Carteira

Olá, tentei gerar utilizar o openboleto para utilizar no Bradesco, mas contem apenas carteiras 03, 06 e 09.
Mas meu gerente me avisou que utilizo a carteira 26, ela precisa ser desenvolvida para esta API?

Obrigado

OpenBoleto & Novas regras BACEN

Novas regras do Bacen

No início do ano passado, o Febraban emitiu um comunicado interno aos bancos sobre o fim das cobranças sem registro.

À partir de janeiro de 2017, todas as carteiras sem registro deverão ser migradas para com registro. Os boletos que ainda forem emitidos sem registro só poderão ser recebidos pelo próprio banco emissor.

Isso está gerando trabalho para muita gente que depende de boletos como forma de pagamento. Com isso, quero criar aqui espaço para que sejam criadas as devidas alterações para que a library seja compatível com essas alterações, que são:

  • Geração de arquivo de remessa
  • Validação de carteiras registradas
  • Homologação junto aos bancos

Fontes:

E o OpenBoleto?

Claramente não é tarefa simples. O OpenBoleto por minha culpa está um pouco largado (muito por falta de tempo). Estou com um projeto em paralelo em JS, mas ainda não está maduro o suficiente para um release. Com isso, pretendo voltar com a atividade no OpenBoleto.

Entretanto, como já estou há algum tempo fora do PHP, não tenho mais a mesma expertise de antes, estou mais vulnerável a cometer erros. Vou me focar mais na gerência deste projeto, em aspectos como:

  • Qualidade
  • Documentação
  • Criação de diretrizes para contribuidores
  • etc

O meu objetivo é aumentar a qualidade do projeto, e a facilidade/boa experiência de contribuir para o mesmo.

Então gostaria de saber o que acham/esperam desta decisão, se existe algo onde eu possa mudar, ou qualquer outro feedback!

Obrigado 👍

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.