ASP.NET - Gerando boletos bancários II
Neste artigo eu vou mostrar como você pode gerar boletos bancários usando o framework desenvolvimento pelo grupo Net.Raptors. O link para download do framework é : http://www.dotnetraptors.com.br/start na seção Downloads.
Na verdade você não precisa usar todo o framework para gerar os seus boletos bancários basta usar a classe Boleto.cs. A classe esta na linguagem C# e eu vou usá-la neste formato.
Neste artigo eu vou aproveitar e mostrar dois recursos legais que você pode usar nas suas aplicações ASP.NET:
A utilização de controles de usuários , Web User Controls , que são controles que podem ser criados como se fossem paginas asp.net e reutilizadas em seus projetos;
A utilização de Profiles para persistir valores entre requisições;
Nota: Para saber mais sobre Web User Controls e Profiles acompanhe os artigos: |
Abra o Visual Web Developer Express Edition e crie um novo web site através da opção File->New web site do menu com o nome boletoBancario.
A página Default.aspx do site deverá apresentar um formulário para preenchimento dos dados necessários a geração do boleto. Geralmente em uma aplicação este formulário não existe , as informações são coletadas de diversas fontes e aglutinadas no momento da geração do boleto. Como eu estou demonstrando como você deve usar a classe para gerar boletos eu criei este formulário para tornar mais didática a apresentação.
O formulário na página Default.aspx poderia ser construído diretamente na página usando tabelas ou outro recurso como CSS, mas eu vou usar um web user control para mostrar como você pode criar controles e reutilizá-los em suas páginas asp.net.
Vamos começar criando o controle chamado dadosboleto.ascx , repare que a extensão do arquivo indica que este é um Web user control. No menu WebSite selecione a opção Add New Item e na janela templates escolha a opção Web User Control indicando o nome dadosBoleto.ascx
Estando no arquivo dadosBoleto.ascx no modo Design podemos criar o formulário web para entrada de dados para geração dos boletos. Os Boletos geralmente usam informações do próprio Documento , do Sacado e do Cedente, desta forma iremos criar um formulário com 3 secções e usar as informações que a classe Boleto.cs nos disponibiliza para geração dos boletos.
A partir do menu Layout selecione Insert Table e defina 25 linhas e duas colunas para a tabela a ser criada. A seguir inclua controles TextBox a partir da Toolbox de forma a obter o seguinte leiaute do formulário: (Eu já atribui valores a propriedade Text dos controles)
Ao terminar salve o arquivo que estará pronto para ser usado na página Default.aspx só faltando um pequeno detalhe que iremos implementar a seguir.
No evento Click do botão - Salvar Dados e Gerar Boleto - iremos usar o recurso de Profile. Antes de podermos usar o recurso devemos habilitar o seu uso efetuando a sua definição no arquivo de configuração Web.config.
Abra então o arquivo Web.Config e defina abaixo da tag <system.web> o código que defina as propriedades do Profile que iremos usar na aplicação:
... < system.web>< anonymousIdentification enabled="true"/>< profile>< properties>< group name="DadosDocumento">< add name="Sequencial" allowAnonymous="true" type="string"/>< add name="DataEmissao" allowAnonymous="true" type="string"/>< add name="DataVencimento" allowAnonymous="true" type="string"/>< add name="DataDocumento" allowAnonymous="true" type="string"/>< add name="DataProcessamento" allowAnonymous="true" type="string"/>< add name="NumeroDocumento" allowAnonymous="true" type="string"/>< add name="Valor" allowAnonymous="true" type="string"/></ group>< group name="DadosCedente">< add name="Aceite" allowAnonymous="true" type="boolean" defaultValue="true"/>< add name="Carteira" allowAnonymous="true" type="string"/>< add name="Contrato" allowAnonymous="true" type="string"/>< add name="NomeCedente" allowAnonymous="true" type="string"/>< add name="AgenciaCedente" allowAnonymous="true" type="string"/>< add name="ContaCedente" allowAnonymous="true" type="string"/>< add name="DVContaCedente" allowAnonymous="true" type="string"/>< add name="instrucao" allowAnonymous="true" type="string" defaultValue="NÆo receber ap¢s o vencimento"/></ group>< group name="DadosCliente">< add name="NomeSacado" allowAnonymous="true" type="string"/>< add name="CPF_CNPJSacado" allowAnonymous="true" type="string"/>< add name="EnderecoSacado" allowAnonymous="true" type="string"/>< add name="Bairro" allowAnonymous="true" type="string"/>< add name="Cidade" allowAnonymous="true" type="string"/>< add name="Estado" allowAnonymous="true" type="string"/>< add name="Cep" allowAnonymous="true" type="string"/></ group></ properties></ profile>.... ... |
Explicando:
A linha <anonymousIdentification enabled="true"/> permite o acesso ao Profile de usuários não autenticados;
Definimos os seguintes grupos de Profile : <group name="DadosDocumento"> , <group name="DadosCedente"> e <group name="DadosCliente">
Em cada grupo definimos as propriedades com : nome , tipo e indicando que usuários anônimos poderiam acessar as propriedades ( allowAnonymous="true")
Agora podemos acessar o Profile definido e salvar os dados que forem informados no do controle de usuário dadosBoleto.ascx usando o seguinte código:
Protected Sub
btnSalvarDados_Click(ByVal sender
As Object,
ByVal e As System.EventArgs)
Handles btnSalvarDados.Click
'salvar dados do Boleto no profile 'dados do Documento With Profile.DadosDocumento.DataDocumento = txtDataDocumento.Text .DataEmissao = txtDataEmissao.Text .DataProcessamento = txtDataProcessamento.Text .DataVencimento = txtDataVencimento.Text .NumeroDocumento = txtNumeroDocumento.Text .Sequencial = txtSequencial.Text .Valor = txtValor.Text End With 'dados do Cedente With Profile.DadosCedente .Aceite = True .Carteira = txtCarteira.Text .Contrato = txtNumeroContrato.Text .NomeCedente = txtNomeCedente.Text .AgenciaCedente = txtAgenciaCedente.Text .ContaCedente = txtContaCedente.Text .DVContaCedente = txtDVContaCedente.Text .instrucao = txtInstrucoes.Text
End
With .NomeSacado = txtNomeSacado.Text .CPF_CNPJSacado = txtCPF_CNPJSacado.Text .EnderecoSacado = txtEnderecoSacado.Text .Cidade = txtCidade.Text .Estado = txtEstado.Text .Bairro = txtBairro.Text .Cep = txtCep.Text End With Response.Redirect("boletosBancoBrasil.aspx") End Sub |
Note que após salvar os dados estamos redirecionando para a página boletosBancoBrasil.aspx para que os boletos sejam gerados.
Voltando a página Default.aspx vamos incluir um logotipo qualquer na página, eu inserir o logotipo Macoratti.net, e em seguida vamos arrastar o controle dadosBoleto.ascx criado acima para a página Default.aspx de forma termos o seguinte resultado:
Agora só falta criamos a página boletosBancoBrasil.aspx e obter as informações salvas no Profile para gerar o boleto. Neste momento vou falar um pouco da classe Boleto.cs.
Para poder usar a classe e gerar os boletos você deve tomar as seguintes providências:
Criar uma pasta App_Code no seu projeto e copiar o arquivo Boleto.cs para esta pasta;
Criar uma pasta para guardar as imagens usadas para gerar os boletos. No exemplo eu criei a pasta imagesBoleto
Definir o namespace : Imports dotnetraptors.Brazil.Boleto no formulário;
Se olharmos a janela Solution Explorer do nosso projeto iremos ver o seguinte os seguintes arquivos:
O código que devemos incluir no formulário boletosBancoBrasil.aspx é o seguinte:
Imports dotnetraptors.Brazil.Boleto
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load gerarBoletoBB() End SubPrivate Sub gerarBoletoBB() Dim bolBB As Boleto = New BoletoBrasil
bolBB.CedenteAgencia = Profile.DadosCedente( "AgenciaCedente")bolBB.CedenteConta = Profile.DadosCedente( "ContaCedente")bolBB.CedenteContaDV = Profile.DadosCedente( "DVContaCedente")bolBB.CedenteNome = Profile.DadosCedente( "NomeCedente")bolBB.Carteira = Int32.Parse(Profile.DadosCedente( "Carteira"))bolBB.Instrucao1 = Profile.DadosCedente( "instrucao") 'bolBB.Sequencial = Convert.ToInt32(Profile.DadosDocumento( "Sequencial"))bolBB.Documento = Profile.DadosDocumento( "NumeroDocumento")bolBB.DtDocumento = Convert.ToDateTime(Profile.DadosDocumento( "DataDocumento"))bolBB.DtEmissao = Convert.ToDateTime(Profile.DadosDocumento( "DataEmissao"))bolBB.DtProcessamento = Convert.ToDateTime(Profile.DadosDocumento( "DataProcessamento"))bolBB.DtVencimento = Convert.ToDateTime(Profile.DadosDocumento( "DataVencimento"))bolBB.Valor = CSng(Convert.ToDouble(Profile.DadosDocumento("Valor"))) 'bolBB.SacadoNome = Profile.DadosCliente( "NomeSacado")bolBB.SacadoEndereco = Profile.DadosCliente( "EnderecoSacado")bolBB.SacadoCPF_CNPJ = Profile.DadosCliente( "CPF_CNPJSacado")bolBB.SacadoCidade = Profile.DadosCliente( "Cidade")bolBB.SacadoUF = Profile.DadosCliente( "Estado")bolBB.SacadoBairro = Profile.DadosCliente( "Bairro")bolBB.SacadoCEP = Profile.DadosCliente( "Cep")Dim geraBoleto As New HTMLBoleto() geraBoleto.ImagesFolder = "imagesBoleto"geraBoleto.AddBoleto(bolBB) geraBoleto.SaveToFile( "boletoBB")Response.Write(geraBoleto.ToString()) End Sub
|
Note que eu estou instanciando a classe BoletoBrasil e atribuindo os valores persistidos via Profile às propriedades definidas na classe para geração do boleto; além disso você deve definir o local das imagens para gerar os boletos usando a propriedade geraBoleto.ImagesFolder.
Nota: Você pode gerar boletos para os seguintes bancos: CEF , Bradesco, Itaú, HSBC e Banco do Brasil.
Executando o projeto e clicando no botão para gerar o boleto iremos obter:
Percebeu que eu estou usando a linguagem VB.NET e a classe esta na linguagem C# e não tivemos problema algum ?
Bem, você poderá efetuar mais testes e eu sugiro que você imprima um boleto e tente efetuar o pagamento antes de por o boleto em produção.
Pegue o projeto completo aqui : boletoBancario.zip (sem a base de dados)
Eu sei é apenas ASP.NET mas eu gosto...
referências:
José Carlos Macoratti