package br.com.caelum.stella.boleto; import java.io.Serializable; import java.net.URL; import br.com.caelum.stella.boleto.bancos.gerador.GeradorDeDigito; /** * <p>Interface que define métodos específicos ao funcionamento de cada banco para * gerar o código de barras e a linha digitável.</p> * * * <p>Infelizmente cada banco funciona de uma maneira diferente para gerar esses * valores, e as vezes até mudam de funcionamento.</p> * * <p>Documentação que pode ser consultada:</p> * * <ul> * <li>http://www.macoratti.net/boleto.htm</li> * <li>http://pt.wikipedia.org/wiki/Boleto_bancário</li> * </ul> * * <p>Para testes rapidos: http://evandro.net/codigo_barras.html</p> * * <p>Apesar de possuirmos diversos unit tests, sempre é bom ter precaução com * valores e testar alguns boletos, em especial se valores serão altos.</p> * * @author Paulo Silveira * @author Cauê Guerra * */ public interface Banco extends Serializable { /** * Retorna o número desse banco, formatado com 3 dígitos * * @return numero formatado */ String getNumeroFormatado(); /** * Pega a URL com a imagem de um banco * * @return logo do banco */ URL getImage(); /** * Gera o código de barras para determinado boleto * @param boleto boleto * @return código de barras (texto) */ String geraCodigoDeBarrasPara(Boleto boleto); String getCodigoBeneficiarioFormatado(Beneficiario beneficiario); String getCarteiraFormatado(Beneficiario beneficiario); String getNossoNumeroFormatado(Beneficiario beneficiario); String getAgenciaECodigoBeneficiario(Beneficiario beneficiario); String getNumeroFormatadoComDigito(); GeradorDeDigito getGeradorDeDigito(); String getNossoNumeroECodigoDocumento(Boleto boleto); }