You are on page 1of 35

Mdulo de apostila : Loja virtual em ASP

Nmero : 001
Nmero de pginas :
expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia
autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este
mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas
companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das
marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os


mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

1/35

Agora que conhecemos sobre ASP, CGI, HTML, entre outros, iremos criar um site do tipo
e-commerce, utilizando principalmente da tecnologia ASP.
Nosso principal objetivo ser de construir o site e no de explicar passo a passo os
principais comandos utilizando o mesmo, sendo que tal procedimento, foi explicado nos
mdulos anteriores.
Vamos gerar primeiramente o arquivo INDEX.HTM, ou seja, a pgina principal do nosso
site, que ter o objetivo principal de efetuar a venda de cursos on-line.
Neste iremos incluir alguns grficos de nossa home-page, e iremos enviar os mesmos em
anexo, juntamente com esta apostila, para que, se for o caso, voc construa o site
exatamente igual ao nosso.
Estes grficos, sero numerados de acordo com o nmero do mdulo, desta forma, ficar
bem fcil a organizao dos arquivos e seus respectivos complementos.
Iremos utilizar o editor FrontPage 2000, porm, iremos tambm exibir o cdigo completo
da aplicao, desta forma, voc poder gerar o site mesmo sem possuir o FrontPage 2000
instalado. Mos a obra.
Se voc possui o FrontPage 2000, siga os passos a seguir, caso contrrio, digite apenas o
cdigo completo do arquivo INDEX.HTM, constante mais adiante:
1. Inicie o FrontPage;
2. Clique na opo de menu ARQUIVO ... SALVAR COMO;
3. Aponte para a pasta onde o PWS est instalado e em seguida salve o arquivo como
INDEX.HTM;
4. Agora, insira o arquivo (grfico) loja1_1.jpg (que acompanha o mdulo em anexo);
5. Centralize o grfico na pgina;
6. Vamos inserir uma tabela com duas colunas e uma linha, onde iremos disponibilizar
algumas informaes sobre a pgina, neste ponto, sua pgina que est sendo gerada no
FrontPage, tem o seguinte aspecto:

2/35

7. Na coluna da esquerda, iremos incluir uma espcie de rotina de busca por cursos, ou
seja, o aluno ir digitar o curso de seu interesse e os dados sobre o mesmo sero
exibidos. Na coluna da direita, iremos expor algumas novidades, notcias, relacionadas
ao site;
8. Na coluna da esquerda, insira de forma centralizada a frase PESQUISA DE
CURSOS, colocando a frase na cor vermelha e em negrito, em seguida, pressione a
tecla <ENTER> e desligue o negrito e centralizado;
9. Clique na opo de menu <INSERIR>;
10. No menu suspenso que aberto, selecione a opo <FORMULRIO>;
11. Neste ponto, voc ter a seguinte viso de seu software Frontpage:

3/35

12. Por se tratar de uma pesquisa, poderemos excluir o boto (REDEFINIR), bastando
clicar uma vez sobre o mesmo e em seguida pressionar a tecla <DELETE>;
13. Agora, clique com o boto direito do mouse sobre o boto do formulrio e em seguida,
no menu suspenso que apresentado, selecione a opo PROPRIEDADES DO
CAMPO DO FORMULRIO, para que possamos alterar as propriedades do boto de
ao, configurando as mesmas, conforme consta da figura a seguir:

14. Desta forma, estamos alterando a propridade NAME do boto para PESQUISA e o
rtulo do boto para PESQUISA;
15. Com o cursos antecedendo o boto <PESQUISA>, pressione uma vez a tecla
<ENTER>;
16. Retorne o cursor para a linha anterior;
17. Altere a cor da fonte para azul e o modo para negrito e digite o contedo CURSO
DE SEU INTERESSE :;
18. Pressione a tecla <ENTER> ao mesmo tempo que pressionar a tecla <SHIFT>;
19. Na linha abaixo, vamos inserir no formulrio uma caixa de texto de uma nica linha,
para isso, clique na opo de menu <INSERIR> , no menu suspenso que apresentado,
selecione a opo <FORMULRIO> e ao lado, escolha <CAIXA DE TEXTO DE
UMA LINHA>, redimensionando a rea de digitao para o tamanho da borda do
formulrio. Neste ponto, sua pgina ter o seguinte aspecto:

4/35

20. Clique com o boto direito do mouse sobre o componente caixa de texto de uma linha
e no menu suspenso que apresentado, selecione a opo PROPRIEDADES DO
CAMPO DO FORMULRIO, em seguida, na janela que exibida, altere as
propriedades do componente conforme mostra a figura a seguir:

21. Na coluna da direita, insira na primeira linha de texto, em fonte


VERMELHA/NEGRITO, e CENTRALIZADO, o contedo NOVOS CURSOS
DO SITE, pressionando a tecla <ENTER> sem seguida;
22. Agora, selecione o alinhando esquerda;
23. Acione a opo de marcao de texto;
24. Digite em sequncia as palavras WAP Internet sem fios, PHP, MySQL,
pressionando a tecla <ENTER> entre cada uma das palavras e desligando o marcador
em seguida;
25. Na linha seguinte, escolha fonte da cor PRETA/NORMAL e em seguida, digite a
expresso FALE CONOSCO;
26. Neste ponto, sua pgina ter o seguinte aspecto:

5/35

27. Marque o texto < FALE CONOSCO> e em seguida, clique sobre o boto <INSERIR
HYPERLINK>, configurando o mesmo conforme a figura a seguir:

6/35

28. Desta forma, criamos um link para enviar um e-mail ao endereo


aprendaemcasa@aprendaemcasa.com.br . Confirme a operao clicando sobre o boto
<OK>.
29. Veja a seguir o cdigo completo do arquivo (pgina) INDEX.HTM, para que voc, no
caso de no possuir o FrontPage 2000, possa digita-lo em qualquer editor de textos,
salvando como arquivo do tipo SOMENTE TEXTO ou TEXTO DO DOS:
<html>
<head>
<title>Projeto Aprenda em Casa</title>
</head>
<body>
<p align="center"><img border="0" src="loja1_1.jpg" width="580" height="150"></p>
<div align="justify">
<table border="0" cellpadding="0" cellspacing="6" width="100%">
<tr>
<td width="50%">
<p align="center"><b><font color="#FF0000">Pesquisa de Cursos</font></b></p>
<form method="POST" action="listacursos.asp">
<p align="left"><font color="#0000FF"><b>Curso de seu interesse:<br>
<input type="text" name="Palavra_chave" size="44" value="Delphi"></b></font></p>
<p align="center"><input type="submit" value="Pesquisa" name="Pesquisa"></p>
</form>
<p align="left">&nbsp;</p>
<p align="center">&nbsp;</td>
<td width="50%">
<p align="center"><font color="#FF0000"><b>NOVOS CURSOS DO SITE</b></font></p>
<ul>
<li>
<p align="left"><font color="#FF0000"><b>WAP internet sem fios;</b></font></li>
<li>
<p align="left"><font color="#FF0000"><b>PHP;</b></font></li>
<li>
<p align="left"><font color="#FF0000"><b>MySQL;</b></font></li>
</ul>
<p align="center"><font color="#000000"><b><a href="mailto:aprendaemcasa@aprendaemcasa.com.br">Fale
Conosco</a></b></font></td>
</tr>
</table>
</div>
</body>
</html>

** Ateno: caso voc esteja usando o FrontPage, no esquea de alterar a propriedade


action do formulrio para listacursos.asp, pois este ser o arquivo que iremos acionar
quando o cliente tentar localizar um determinado curso.
Observe que a primeira pgina (INDEX.HTM) simples e sem a necessidade do acesso a
banco de dados, porm todas as outras devero executar este procedimento, devido a isto,
iremos a seguir, criar o banco de dados que ser utilizado durante o desenvolvimento das
demais pginas.

7/35

Neste site, iremos partir do principio de que todos os cursos seriam realizados por CDROM, e que dependendo do estado, o valor do frete ser modificado.
Alm disso, temos que considerar que um nico aluno, poder adquirir mais de um curso, e
que o aluno poder optar pelo pagamento via boleto bancrio.
Neste caso, teremos as seguintes tabelas:
Estados, Frete, Venda, ItensVenda, Boleto e cursos.
O banco de dados ter o nome de aprendaemcasa.
A seguir, observe a estrutura das tabelas:

8/35

** ateno, salve o banco de dados aprendaemcasa no mesmo diretrio das pginas


HTML e Scripts ASP.
Neste mdulo, vamos falar sobre um arquivo especial, o GLOBAL.ASA, que ser de
grande utilidade no site da loja virtual. A principio, o arquivo Global.asa um arquivo de
texto, que poder ser criado pelo programador. Este dever estar localizado no diretrioraiz do aplicativo ASP, e formado por quatro eventos, que so responsveis pela
realizao de eventos. A seguir, observe a estrutura bsica do arquivo Global.asa:
<OBJECT
RUNAT=server
SCOPE=Application
ID=Accon
PROGID=adodb.connection>
</OBJECT>
<OBJECT RUNAT=server SCOPE=Sesseion ID=SobjMail PROGID=Cdonts.Newmail>
</OBJECT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
Codigo do procedimento
End Sub
9/35

Sub Session_OnStart
Codigo do procedimento
End Sub
Sub Session_OnEnd
Cdigo do procedimento
End Sub
Sub Application_OnEnd
Cdigo do procedimento
End Sub
Na parte superior do arquivo, esto localizados todos os objetos de nvel Application, que
so declarados com a TAG Object.
Em seguida, tambm com a TAG object esto os objetos de nvel Session.
Logo a seguir, temos uma TAG Script que est indicando a linguagem e a localizao
utilizadas para executar o cdigo.
E depois poderemos programar uma srie de eventos, ou seja, instrues que sero seguidas
quando o aplicativo for iniciado, a sesso for iniciada, a sesso for encerrada e o aplicativo
for encerrado.
Observe que um evento disparado, ou seja, iniciado atravs das palavra-chave SUB e seus
comandos so finalizados atravs da palavra-chave END SUB. Observe na tabela a seguir a
lista dos eventos disponveis e sua finalidade dentro do cdigo:
Evento
Application_OnStart
Application_OnEnd
Session_OnStart
Session_OnEnd

Finalidade
Disparado quando a primeira pgina do
aplicativo solicitada
Disparado quando o IIS encerrado
Disparado quando a primeira pgina do
aplicativo solicitada por um visitante
Disparado quando o tempo de sesso termina.

O Objetivo principal do arquivo GLOBAL.ASA em nosso site de loja virtual de gerar


variveis globais ligadas ao banco de dados. Mas qual a finalidade deste tipo de operao.
Vamos imaginar que voc migre seu aplicativo do banco de dados ACCESS para o banco
de dados SQL, no ir precisar realizar modificaes dentro do Script das pginas e
simplesmente no arquivo GLOBAL.ASA, que ir fornecer as variveis globais de acesso ao
banco de dados.
Inicie o editor de textos de sua preferncia e digite o cdigo a seguir do arquivo
GLOBAL.ASA:

10/35

<SCRIPT LANGUAGE=VBScript RUNAT=Server>


Sub Application_OnStart
Application.look
Server.scripttimeout=60
Application(BancodeDados)=C:\caminho da aplicao\aprendaemcasa.mdb
Application(StringConexao)=DBQ=&Application(BancodeDados)&;Driver={Microsoft Access Driver(*.mdb)}
Application.Unlock
End Sub
</Script>

A principio declaramos a linguagem que ser utilizada, atravs do parmetro LANGUAGE


e atravs do parmetro RUNAT declaramos onde o aplicativo ser executado.
Em seguida, quando o usurio executar o aplicativo, em sequncia, teremos os seguintes
procedimentos:
1. O aplicativo bloqueado, atravs do mtodo Application.Look, desta forma poderemos
inicializar todas as variveis do ambiente;
2. Em seguida alteramos o tempo padro de espera do servidor que de 20 para 60;
3. Criamos uma varivel global denominada BANCODEDADOS, que contm o caminho
e o nome do banco de dados que iremos acessar;
4. Criamos uma varivel global denominada STRINGCONEXAO, que contm o a string
de conexo com o banco de dados;
5. Desbloqueamos o aplicativo atravs do mtodo Application.Unlock;
6. Finalizamos o procedimento;
7. Finalizamos o Script.
No se esquea de salvar este arquivo como Somente texto do DOS ou semelhante.
Vamos agora gerar a pgina que ter o objetivo de listar os cursos disponveis na loja
virtual que est sendo gerada.
O acesso ao banco de dados ser realizado por meio do ActiveX Data Objects, e para que o
resultado seja positivo, necessrio que voc tenha instalado no equipamento a DLL
MSADO15.DLL.
Para criar esta ligao, ou seja, instncia ao objeto ADO, nos utilizaremos do mtodo
CREATEOBJECT. Sua sintaxe bsica :
SET objeto = Server.CreateObject(apresentador)
Onde o objeto o nome do objeto que iremos criar, e o apresentador o tipo de objeto
ADO que ser criado, que podem ser:

Command;
Connection;
Error;
Field;

11/35

Parameter;
Property
Recordset.

No nosso caso, queremos a principio conectar o site ao banco de dados, neste caso, iremos
usar o objeto connection. Este tem um mtodo chamado open, para efetuar a conexo e
abrir o banco de dados para uso na aplicao. Sua sintaxe :
Nome_objeto_connection.Open StringConexo
Em seguida, para se conectar a uma determinada tabela do banco de dados, temos o objeto
RECORDSET, que tem como sintaxe:
Nome_objeto_recordset.Open nome_tabela, nome_objeto_connection
Com base no que vimos at o momento, veja a seguir a listagem completa do arquivo
LISTACURSOS.ASP, que foi invocado dentro da pgina INDEX.HTM quando o usurio
solicita a busca de um determinado curso:
<%
Set conexao=server.createobject("ADODB.Connection")
Conexao.Open Application("StringConexao")
%>
<html>
<head>
<title>Listagem de cursos</title>
</head>
<body>
<p align="center"><img border="0" src="file:///C:/loja/loja1_1.jpg" width="580"
height="150"></p>
<p align="center">CURSOS DISPONVEIS</p>
<div align="justify">
<%
Set cursos=Server.CreateObject("ADODB.Recordset")
cursos.open "Select * from cursos where curso like
'%"&request("Palavra_chave")"%'order by curso",conexao
%>
<%do while not cursos eof%>
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="32%">Curso</td><%=cursos.fields("curso")%>
<td width="68%">Descrio</td><%=cursos.fields("descricao")%>
</tr>
<tr>
<td width="32%">Nivel</td><%=cursos.fields("nivel")%>
<td width="68%">Valor</td><%Formatcurrency(cursos.fields("valor"))%>
</tr>
</table>
</div>
<hr>
<%cursos.movenext%>
<%loop%>
</body>
</html>

12/35

Neste mdulo iremos criar a pgina de carrinho de compras, para que o usurio ao escolher
o curso de sua preferncia, ser levado a uma pgina onde efetuaremos o primeiro passo
para o fechamento das vendas.
Para isso, vamos primeiramente alterar a pgina criada na aula anterior, que tinha o objetivo
de listar os cursos encontrados atravs da busca efetuada pelo aluno.
<%
Set conexao=server.createobject("ADODB.Connection")
Conexao.Open Application("StringConexao")
%>
<html>
<head>
<title>Listagem de cursos</title>
</head>
<body>
<p align="center"><img border="0" src="file:///C:/loja/loja1_1.jpg" width="580"
height="150"></p>
<p align="center">CURSOS DISPONVEIS</p>
<div align="justify">
<%
Set cursos=Server.CreateObject("ADODB.Recordset")
cursos.open "Select * from cursos where curso like
'%"&request("Palavra_chave")"%'order by curso",conexao
%>
<%do while not cursos eof%>
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="32%">Curso</td><%=cursos.fields("curso")%>
<td width="68%">Descrio</td><%=cursos.fields("descricao")%>
</tr>
<tr>
<td width="32%">Nivel</td><%=cursos.fields("nivel")%>
<td width="68%">Valor</td><%Formatcurrency(cursos.fields("valor"))%>
</tr>
</table>
</div>
<hr>
<%cursos.movenext%>
<%loop%>
</body>
</html>
Acima voc observa o arquivo de listagem de cursos da mesma forma em que o
criamos no mdulo anterior. A nossa alterao ser a de criar um link, com o
cdigo do curso selecionado, que tem o objetivo de levar o aluno a pgina de
carrinho de compras, e ao lado deste link, iremos incluir um boto que ter a
inscrio COMPRAR, para que fique bem claro ao usurio a inteno do link.
Vamos ento isolar a linha que exibe o(s) curso(s) encontrado(s):
<td width="32%">Curso</td><%=cursos.fields("curso")%>

Agora iremos modificar esta linha, conforme mostramos a seguir:

13/35

<td width="32%">Curso</td><a
href=carrinho.asp?curso=<%=cursos.fields("codigocurso")%>><img border=0
src=bt_comprar.gif>

Na linha acima, criamos um link para a pgina carrinho.asp e iremos passar para a mesma o
cdigo do curso selecionado, atravs do campo curso.
Vamos primeiramente montar a estrutura da pgina que ter o objetivo de listar o(s)
curso(s) selecionado(s) para a compra.
No FrontPage, monte a seguinte estrutura:

Na pgina criada no FrontPage, conforme vimos acima, clique com o boto direito do
mouse sobre a parte livre constante do formulrio, e no menu suspenso que apresentado,
selecione a opo PROPRIEDADES DO FORMULRIO. Ser ento apresentada a
seguinte janela:

14/35

Na verdade, estava marcada a opo ENVIAR PARA, e voc dever marcar a opo
ENVIAR PARA OUTRO. Aps esta configurao, clique no boto OPES e altere as
configuraes de opes para o manipulador de formulrios conforme mostra a figura a
seguir:

Veja a seguir o cdigo completo desta pgina at o momento:


<html>
<head>
<title>Carrinho de compras</title>
</head>
<body>
<div align="justify">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="100%" bordercolor="#FF0000" bgcolor="#FF0000">
<p align="center"><font size="4"><b>Carrinho de compras - Curso(s)
selecionado(s)</b></font></td>
</tr>
</table>
</div>

15/35

<form method="POST" action="carrinho.asp">


<div align="justify">
<table border="1" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="25%">Curso</td>
<td width="25%">Valor</td>
<td width="25%">Quantidade</td>
<td width="25%">Total</td>
</tr>
<tr>
<td width="25%">&nbsp;</td>
<td width="25%">&nbsp;</td>
<td width="25%">&nbsp;</td>
<td width="25%">&nbsp;</td>
</tr>
<tr>
<td width="25%">&nbsp;</td>
<td width="25%">&nbsp;</td>
<td width="25%">SubTotal</td>
<td width="25%">&nbsp;</td>
</tr>
</table>
</div>
<p align="left">Caso queira alterar a quantidade de licenas de um
determinado curso, basta alterar o campo quantidade e em seguida clicar sobre
o boto ALTERAR, porm, caso queira excluir do carrinho o curso selecionado,
basta alterar o valor do campo QUANTIDADE para &quot;zero&quot; e em seguida
clicar no boto ALTERAR.</p>
<p align="left"><input type="submit" value="Alterar" name="B1"></p>
</form>
<p align="center">
<applet code="fphover.class" codebase="fpweb:///." width="140" height="24">
<param name="color" value="#000080">
<param name="hovercolor" value="#0000FF">
<param name="textcolor" value="#FFFFFF">
<param name="text" value="Continuar comprando">
<param name="effect" value="glow">
<param name="url" valuetype="ref" value="index.htm">
</applet>
<applet code="fphover.class" codebase="fpweb:///." width="140" height="24">
<param name="color" value="#000080">
<param name="hovercolor" value="#0000FF">
<param name="textcolor" value="#FFFFFF">
<param name="text" value="Concluir compra">
<param name="effect" value="glow">
<param name="url" valuetype="ref" value="Frete.asp">
</applet>
</p>
</body>
</html>

Nosso prximo passo a incluso do cdigo necessrio para concretizar a venda dos
cursos, ou seja, para que o usurio seja levado a uma tela para confirmar o pagamento.
Neste momento, iremos utilizar um recurso denominado cookie. Em termos gerais, um
cookie pode ser qualquer arquivo ou um conjunto de dados que seja enviado por um outro
computador atravs de uma rede, seja ele um texto, uma foto ou um gif animado. Em um
servidor Web, este trabalha como um gerador de informaes, atravs de arquivos que
sero salvos no lado do cliente ou no lado do servidor.

16/35

Quando um Cookie enviado a uma mquina cliente, ele possui os seguintes parmetros:
Name : indica o nome do cookie (arquivo) armazenado no lado do cliente
Expires : indica a data em que o mesmo perde a validade
Domain : indica o nome do domnio que originou o cookie
Path : indica o caminho onde o cookie ser armazenado
Secure : caso exista, este parmetro informa que o cookie dever ser gerado somente se
o procedimento estiver sendo realizado em um ambiente seguro.
Se o Cookie um arquivo, automaticamente ele armazena valores. Diferente de uma tabela
qualquer, que separa as informaes em campos (colunas), os cookies separam as
informaes atravs de chaves, como por exemplo, uma chave para armazenar o dia do
nascimento e uma chave para armazenar o ms do nascimento, ou ainda duas uma chave
para armazenar a razo social e outra o nome fantasia de uma determinada empresa.
No ASP, o objeto Request possui um conjunto prprio para tratar de cookies, denominado
cookies que representa as informaes de um cookie enviado do browser cliente para a
mquina servidora. J no Objeto Response, o conjunto de cookies representam as
informaes enviadas do servidor para a mquina cliente.
Vamos verificar ento a forma de se criar um cookie na mquina do cliente:
Response.cookies(nome)(chave_opcional)=valor
Veja o exemplo a seguir:
Response.cookies(site)(url)=www.aprendaemcasa.com.br
Response.cookies(site)(email)=aprendaemcasa@aprendaemcasa.com.br
Observe que temos um cookie que ser enviado mquina do cliente denominado SITE e
que possui duas chaves: url / email, contendo respectivamente os valores :
www.aprendaemcasa.com.br / aprendaemcasa@aprendaemcasa.com.br
J para recuperar os dados do cookie enviado pela mquina servidora, utilize a seguinte
sintaxe:
Varivel = Request.cookies(nome)(chave_opcional)
Exemplo:
Endereco = Request.cookies(site)(url)
Email = Request.cookies(site)(email)
Vamos ento efetuar as alteraes necessrias em nossa pgina de carrinho de compras para
que possamos trabalhar com os dados exibidos/solicitados na mesma.

17/35

O primeiro passo criar a conexo com o banco de dados, alm de criar uma varivel do
tipo Recordset, para que possamos manipular os registros sobre a forma de seleo, para
isso, iremos incluir o seguinte cdigo:
<%
set conexao=server.createobject(ADODB.Connection)
conexao.open application(stringconexao)
set venda=server.createobject(ADODB.Recordset)
Em seguida, teremos que verificar se o browser est enviando o cookie de nossa pgina
para o servidor atravs da pgina carrinho.asp:
Numeropedidock=Request.Cookies(CursoAprendaemCasa)(Codpedido)
O prximo passo verificar se o valor da varivel Numeropedidock j continha um valor,
pois o cliente poderia ter interrompido uma compra ou at mesmo concludo esta:
If numeropedidock<> then
Venda.open(Select * fron vendas where codigovenda=&Numeropedidock),conexao
If venda.eof then
Numeropedidock=
Else
If venda.fields(formapagamento)<> then
Numeropedidock=
Else
Session(codigodestavenda)=numeropedidock
Endif
Endif
Venda.close
Endif
Observe a lgica desta sequncia:
1. Se o nmero do pedido do cookie nulo, existe um cookie chamado
cursoaprendaemcasa na mquina do cliente;
2. verificado se existe na tabela de vendas se existe algum registro cujo o cdigo da
venda igual ao nmero do cookie recuperado;
3. No achada tal situao, o valor da varivel numeropedidock limpo, com o objetivo
de criarmos um novo valor mais adiante;
4. Em outra situao, caso encontrada uma venda com o mesmo cdigo do nmero do
cookie recuperado, porm que j tenha sido concluda, pois o campo
(formadepagamento) contm um valor vlido a varivel numeropedidock tambm
limpa;
5. Encontrando uma venda com a forma de pagamento no preenchida sinal de que a
mesma no foi concluda totalmente

18/35

Agora vem uma nova situao, ou seja, a varivel numeropedidock est com o seu
contedo nulo, desta forma, temos que criar uma varivel de sesso para identificar a venda
do curso, observe o cdigo que tem esta funo:
If numpedidock= then
Venda.open(Select max(codigovenda) as ultimocodigo from vendas), conexao
If not venda.eof then
Session(codigodestavenda)=venda.fields(ultimocodigo)+1
Else
Session(codigodestavenda)=1
Endif
Conexao.execute(insert into vendas (codigovenda) values (&session(codigodestavenda)&))

Response.cookies(CursoAprendaemCasa)(codpedido)=Session(codigodestavenda)
Response.cookies(CursoAprendaemCasa).Expires=now+2
End if
%>
Estes cdigos devero ser inseridos no inicio do Script da pgina carrinho.asp, antes da
abertura da TAG <HTML>.
O prximo passo inserir os livros comprados na tabela itensdeumavenda, aps a abertura
de um novo registro na tabela vendas. Este cdigo, dever ser incluso aps a criao da
primeira linha da tabela. Observe o cdigo a seguir:
<%
Set Itemvenda=server.createobject(ADODB.Recordset)
If request.queryString(curso)<> then
Itemvenda.open
Select
*
from
codigovenda=&session(codigodestavenda)&and
Codigocurso=&Request.QueryString(curso),conexao

itensvenda

where

If Itemvenda.eof then
Conexao.execute(Insert into ItensVenda (Codigovenda, Codigocurso, Quantidade)
values (&session(codigodestavenda) & , & Request.queryString(curso)&,1))
End if
ItenVenda.close
End if
No cdigo acima, criamos um objeto do tipo ADODBRecorset para fazer comunicao
com a tabela ItensVenda, e em seguida, analisado o conjunto QueryString do Objeto
Request, que s conter um determinado valor para o campo curso se a pgina
carrinho.asp tiver sido chamada a partir do link existindo ao lado de cada curso listado na
pgina listacursos.asp.
O prximo passo programar o boto atualizar, que dever ser usado pelo usurio caso este
queira alterar a quantidade padro do nmero de cursos adquirido de uma determinada
matria ou quando existir a excluso de um determinado curso da lista de compras. Nessa
situao, a pgina carrinho.asp est sendo chamada por si mesma, ou seja, se existe algum

19/35

contedo no conjunto Form no seu objeto request. Para tal funo, insira a seguinte
codificao abaixo do cdigo anterior:
If request.form<> then
Conexao.execute(delete
*
from
Itensvenda
where
codigovenda=&session(Codigodestavenda))
For each field_name in request.form
If field_name<>B1 and Request.form(field_name)<>0 then
Conexao.execute(Insert into ItensVenda (codigovenda,codigocurso,quantidade) values
(&session(codigodestavenda) &,&field_name&,&request.form(field_name)&))
End if
Next
End if
O prximo passo a criao do cdigo que ir mostrar a tabela contendo os cursos
selecionados. Nesta situao, aps o cdigo exibido acima, insira o seguinte cdigo:
Subtotal=0
Set cursos=server.createobject(ADODB.Recordset)
ItemVenda.open
Select
*
from
codigovenda=&session(codigodestavenda),conexao
If not itemvenda.eof then
Itemvenda.movefirst
Do while not itemvenda.eof
%>

itensvenda

where

Agora, insira no cdigo HTML j existente, para que se encaixe dentro das clulas que
sero apresentadas entre o cabealho e o subtotal, para isso, mostramos a seguir o cdigo
completo da pgina carrinho.asp:
<%
set conexao=server.createobject(ADODB.Connection)
conexao.open application(stringconexao)
set venda=server.createobject(ADODB.Recordset)
Numeropedidock=Request.Cookies(CursoAprendaemCasa)(Codpedido)
If numeropedidock<> then
Venda.open(Select * fron vendas where codigovenda=&Numeropedidock),conexao
If venda.eof then
Numeropedidock=
Else
If venda.fields(formapagamento)<> then
Numeropedidock=
Else
Session(codigodestavenda)=numeropedidock
End if
End if
Venda.close
End if
If numpedidock= then
Venda.open(Select max(codigovenda) as ultimocodigo from vendas), conexao
If not venda.eof then
Session(codigodestavenda)=venda.fields(ultimocodigo)+1
Else

20/35

Session(codigodestavenda)=1
Endif
Conexao.execute(insert into vendas (codigovenda) values (&session(codigodestavenda)&))
Response.cookies(CursoAprendaemCasa)(codpedido)=Session(codigodestavenda)
Response.cookies(CursoAprendaemCasa).Expires=now+2
End if
%>
<html>
<head>
<title>Carrinho de compras</title>
</head>
<body>
<div align="justify">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="100%" bordercolor="#FF0000" bgcolor="#FF0000">
<p align="center"><font size="4"><b>Carrinho de compras - Curso(s)
selecionado(s)</b></font></td>
</tr>
</table>
</div>
<form method="POST" action="carrinho.asp">
<div align="justify">
<table border="1" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="25%">Curso</td>
<td width="25%">Valor</td>
<td width="25%">Quantidade</td>
<td width="25%">Total</td>
</tr>
<%
Set Itemvenda=server.createobject(ADODB.Recordset)
If request.queryString(curso)<> then
Itemvenda.open Select * from itensvenda where codigovenda=&session(codigodestavenda)&and
Codigocurso=&Request.QueryString(curso),conexao
If Itemvenda.eof then
Conexao.execute(Insert into ItensVenda (Codigovenda, Codigocurso, Quantidade) values (&session(codigodestavenda) & ,
& Request.queryString(curso)&,1))
End if
ItenVenda.close
End if
If request.form<> then
Conexao.execute(delete * from Itensvenda where codigovenda=&session(Codigodestavenda))
For each field_name in request.form
If field_name<>B1 and Request.form(field_name)<>0 then
Conexao.execute(Insert into ItensVenda (codigovenda,codigocurso,quantidade) values (&session(codigodestavenda)
&,&field_name&,&request.form(field_name)&))
End if
Next
End if
subtotal=0
set cursos=server.createobject("ADODB.Recordset")
ItemVenda.open "Select * from itensvenda where codigovenda="&session("codigodestavenda"),conexao
if not itemvenda.eof then
itemvenda.mevefirst
do while not itemvenda.eof
%>
<tr>
<td width="25%"><%=itemvenda("codigocurso")%></td>
<%cursos.open "select * from cursos where codigocurso="&itemvenda("codigocurso"),conexao%>
<td width="25%">
<%cursos.open "Select * from cursos where codigocurso="&itemvenda("codigocurso"),conexao%>
<%formatcurrency(cursos("valor"))%></td>
<td width="25%"><inputtype="text" name="<%Itemvenda("codigocurso")%>"size="2" maxlenght="2"
value="<%Itemvenda("quantidade")%>"></td>
<td width="25%"><%formatCurrency(itemvenda("quantidade")*cursos("valor"))%></td>
</tr>
<%
subtotal=subtotal+(itemvenda("quantidade")*cursos("valor"))

21/35

cursos.close
itemvenda.movenext
loop
session("subtotal")=subtotal
conexao.execute "UPDATE vendas set valorvenda=CDBL('"&formatnumber(subtotal)&"') Where
codigovenda="&session("codigodestavenda")
%>
<tr>
<td width="25%">&nbsp;</td>
<td width="25%">&nbsp;</td>
<td width="25%">SubTotal</td>
<td width="25%"><%=formatcurrency(subtotal)%></td>
</tr>
</table>
<%endif%>
</div>
<p align="left">Caso queira alterar a quantidade de licenas de um
determinado curso, basta alterar o campo quantidade e em seguida clicar sobre
o boto ALTERAR, porm, caso queira excluir do carrinho o curso selecionado,
basta alterar o valor do campo QUANTIDADE para &quot;zero&quot; e em seguida
clicar no boto ALTERAR.</p>
<p align="left"><input type="submit" value="Alterar" name="B1"></p>
</form>
<p align="center">
<applet code="fphover.class" codebase="./" width="140" height="24">
<param name="color" value="#000080">
<param name="hovercolor" value="#0000FF">
<param name="textcolor" value="#FFFFFF">
<param name="text" value="Continuar comprando">
<param name="effect" value="glow">
<param name="url" valuetype="ref" value="index.htm">
</applet>
<applet code="fphover.class" codebase="./" width="140" height="24">
<param name="color" value="#000080">
<param name="hovercolor" value="#0000FF">
<param name="textcolor" value="#FFFFFF">
<param name="text" value="Concluir compra">
<param name="effect" value="glow">
<param name="url" valuetype="ref" value="Frete.asp">
</applet>
</p>
</body>
</html>

22/35

A partir deste ponto iremos criar a pgina que tem o objetivo de apresentar valores do frete
e tambm selecionar a forma de pagamento da compra. A pgina ter o nome FRETE.ASP,
pois no mdulo anterior, este foi o arquivo que ser carregado quando o usurio confirmar a
sua compra. Outro fator importante neste pgina que nela, o usurio ir entrar com seus
dados pessoais para a finalizao da compra, ou seja, nome, CPF, etc... O caso do frete
que estamos considerando cursos via CD-ROM, oferecidos pela empresa.
Para construir a pgina inicial, iremos utilizar o FrontPage, execute o mesmo e monte a
pgina de acordo com o cdigo HTML a seguir:
<html>
<head>
<title>Projeto Aprenda em Casa</title>
</head>
<body>
<p align="center"><img border="0" src="loja1_1.jpg"></p>
<p align="center">Projeto Aprenda em Casa - Rotina de confirmao de
venda/calculo
de frete.</p>
<p align="left">Prezado cliente, informe o estado para onde o CD com o(s)
curso(s) adquiridos ser remetido:</p>
<form method="POST" action="frete.asp">
<p align="left"><select size="1" name="estado">
</select><input type="submit" value="Verifica" name="B1"></p>
</form>
<p align="left">Para este estado, o valor a ser cobrado de frete :</p>
<div align="justify">
<table border="1" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="50%">Valor do Frete</td>
<td width="50%">Valor total da compra</td>
</tr>
<tr>
<td width="50%">&nbsp;</td>
<td width="50%">&nbsp;</td>
</tr>
</table>
</div>
<p>Qual a forma de pagamento que prefere utilizar:</p>
<form method="POST" action="fechavenda.asp">
<p><input type="radio" value="Cartao" checked name="Formapagamento">Carto de
Crdito <input type="radio" name="Formapagamento" value="Boleto">Boleto
bancrio</p>
<div align="justify">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="50%">Nome Completo
....................................................</td>
<td width="50%"><input type="text" name="nome" size="45"></td>
</tr>
<tr>
<td width="50%">CPF
......................................................................</td>
<td width="50%"><input type="text" name="cpf" size="45"></td>
</tr>
<tr>

23/35

<td width="50%">E-mail
...................................................................</td>
<td width="50%"><input type="text" name="email" size="45"></td>
</tr>
<tr>
<td width="50%">Endereo
..............................................................</td>
<td width="50%"><input type="text" name="endereco" size="45"></td>
</tr>
<tr>
<td width="50%">Cidade
.................................................................</td>
<td width="50%"><input type="text" name="bairro" size="45"></td>
</tr>
<tr>
<td width="50%">Estado
.................................................................</td>
<td width="50%"><input type="text" name="cidade" size="45"></td>
</tr>
<tr>
<td width="50%">CEP
....................................................................</td>
<td width="50%"><input type="text" name="estado" size="45"></td>
</tr>
<tr>
<td width="50%">Fone para contato
...............................................</td>
<td width="50%"><input type="text" name="telefone" size="45"></td>
</tr>
<tr>
<td width="50%"><font color="#0000FF">Caso comprador for pesso
jurdica:</font></td>
<td width="50%"></td>
</tr>
<tr>
<td width="50%"><font color="#000000">Empresa
..............................................................</font></td>
<td width="50%"><input type="text" name="empresa" size="45"></td>
</tr>
<tr>
<td width="50%">CGC
...................................................................</td>
<td width="50%"><input type="text" name="cgc" size="45"></td>
</tr>
</table>
</div>
<p><input type="submit" value="Confirma" name="B1"></p>
</form>
<p>&nbsp;</p>
</body>
</html>

Neste mdulo, iremos utilizar um novo conceito denominado Arquivo de funo, ou seja,
um arquivo, que contm um determinado cdigo que poder ser til em diversas pginas,
assim, no precisaremos repetir o seu cdigo diversas vezes, bastando para isso, apenas
declarar o arquivo que ser utilizado na pgina.
24/35

Este arquivo ter a finalidade de testar se ou no trmino de sesso, para que no seja
realizada uma venda de forma irregular. Vamos chamar este arquivo de UTILITARIO.ASP.
A seguir veja o seu cdigo:
<%
Function Valida_sessao()
If session(codigodestavenda)= then
%>
<b>Pedido invlido. Reinicie sua compra</b>
<%
Response.end
End if
End Function
%>
Agora, na pgina frete.asp, atravs da diretiva include, iremos incluir o arquivo
utilitarios.asp, sendo que tal procedimento dever ser a primeira linha da pgina:
<!-#include file=utilitarios.asp->
O prximo passo ser justamente verificar se a sesso ainda est ativa, ou seja, se a venda
vlida ou no, e iremos utilizar o arquivo utilitarios.asp, que foi gerado anteriormente e j
incluso na pgina:
<%
Call validar_sessao()
Vale lembrar que os cdigos at o momento devero estar no inicio da pgina. O prximo
passo criar a conexo com o banco de dados, cdigos estes que devero estar logo abaixo
dos exibidos anteriormente, logo, o inicio de nossa pgina ser igual a:
<!-#include file="utilitarios.asp"->
<%
call valida_sessao()
set conexao=server.createobject("adodb.connection")
conexao.open application("Stringconexao")
set bestados=server.createobject("adodb.recordset")
set bcursos=server.createobject("adodb.recordset")
set bfrete=server.createobject("adodb.recordset")
set bitensvenda=server.createobject("adodb.recordset")
%>

Nesta pgina iremos utilizar tambm rotinas em JavaScript, pois alguns dados no podero
deixar de serem preenchidos, como por exemplo o endereo, pois como iremos enviar o
material caso no tenhamos o endereo do cliente? Teremos tambm que testar se o CPF ou
o CGC de um comprador so vlidos, caso contrrio, como iremos emitir de forma segura
para a empresa o boleto? Os alunos que participam do curso Aplicaes e Banco de dados
para Web, criaram uma rotina parecida no mdulo Introduo ao JavaScript.e esta funo

25/35

dever estar no inicio do corpo da pgina, antes da tag <BODY>. A seguir exibimos a
listagem completa deste conjunto de funes, j encaixada dentro do cdigo:

<title>Projeto Aprenda em Casa</title>


</head>
<SCRIPT LANGUAGE="JavaScript">
<!-//
function validadados()
if (document.form1.nome.value.lenght==0) {
alert (" obrigatrio o preenchimento do campo NOME");
document.form1.nome.focus();
return false;
}
if (document.form1.endereco.value.lenght==0) {
alert(" obrigatrio o preenchimento do campo ENDERECO");
document.form1.endereco.focus();
return false;
}
if (document.form1.cidade.value.lenght==0) {
alert(" obrigatrio o preenchimento do campo CIDADE");
document.form1.cidade.focus();
return false;
}
if (document.form1.estado.value.lenght==0) {
alert(" obrigatrio o preenchimento do campo ESTADO");
document.form1.estado.focus();
return false;
}
if (document.form1.empresa.value.lenght!=0) {
s=limpa_string(document.form1.cgc.value);
if (valida_cgc(document.form1.cgc.value)==false) {
alert("CGC invlido");
document.form1.cgc.focus();
return false;
}
}
if (document.form1.empresa.value.lenght==0) {
s=limpa_string(document.form1.cpf.value);
if (valida_cpf(document.form1.cpf.value)==false) {
alert("CPF invlido");
document.form1.cpf.focus();
return false;
}
}
return true;
}
function limpa_string(s) {
var digitos="0123456789";
var temp="";
var digito="";
for (var i=0; i<s.lenght; i++) {
digito=s.charat(i);
if (digitos.indexof(digito)>=0) {
temp=temp+digito}
}
return temp
}
function valida_cpf(s)
{
var i;

26/35

s=limpa_string(s);
var c=s.substr(0,9);
var dv=s.substr(9,2);
var d1=0;
for (i=0; i<9; i++)
{
d1+=c.charat(i)*(10-i);
}
if (d1==0) return false;
d1=l1-(d1%11);
if (d1>9) d1=0;
if (dv.charat(0) != d1)
{
return.false;
}
d1 *= 2;
for (i=0; i<9; i++)
{
d1+=c.charat(i)*(11-i);
}
d1=11-(d1%11);
if (d1>9) d1=0;
if (dv.charat(1)!=d1)
{
return false;
}
return true;
}
Function valida_CGC(s)
{
var i;
s=limpa_string(s);
var c=s.substr(0,12);
var dv=s.substr(12,2);
var d1=0;
for (i=0; i<12; i++)
{
d1+=c.charat(11-i)*(2+(i%8));
}
if (d1==0) return false;
d1=11-(d1%11);
if (d1>9) d1=0;
if (dv.charat(o)!=d1)
{
return false;
}
d1 *= 2;
for (i=0; i<12; i++)
{
d1+=c.charat(11-i)*(2+((i+1)%8));
}
d1=11-(d1%11);
if (d1>9) d1=0;
if (dv.charat(1)!=d1)
{
return false;
}
return true;
}
//->
</script>
<body>

27/35

O prximo passo preencher a caixa de listagem de nossa pgina com a lista dos estados
possveis para a remessa do material. Abaixo, exibimos o cdigo que ter esta funo, e o
mesmo dever estar dentro do form que tem a caixa de seleo, veja abaixo parte do cdigo
que foi modificada:
<form method="POST" action="frete.asp">
<p align="left"><select size="1" name="estado">
<%bestado.open "select*from estados order by estado",conexao%>
<%do while not bestados.eof%>
<option value="
<%bestados.fields("estado")%>">
<%bestados.fields("estado")%>
</option>
<%bestados.movenext
loop
bestados.close%>
</select><input type="submit" value="Verifica" name="B1"></p>
Aps o fechamento do FORM, vamos testar se o usurio j selecionou o estado do
FRETE, para que possamos dar continuidade ao processo de compra, assim, aps o
fechamento do FORM da seleo do estado, vamos entrar com a seguinte sequncia de
comandos:
</select><input type="submit" value="Verifica" name="B1"></p>
</form>
<%
if request.form<>"" then
bitensvenda.open "Select * from itens where
codigovenda="&session("codigodestavenda"),conexao
regiao=request("estado")
bfrete.open "Select * from frete where uf='"&regiao&"
session("valorfrete")=bfrete.fields("valor")
bfrete.close
valortotalpedido=session("valorfrete")
%>
<p align="left">Para este estado, o valor a ser cobrado de frete :</p>

O prximo passo exibir o valor do frete e o valor total do pedido, dentro da tabela que foi
construda com este fim. Observe a seguir como ficou o cdigo HTML para obter o
resultado citado:
<table border="1" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="50%">Valor do Frete</td>
<td width="50%">Valor total da compra</td>
</tr>
<tr>
<td width="50%"><%=formatcurrency(session("valorfrete"))%>&nbsp;</td>
<td width="50%"><%=formatcurrency(valortotalpedido)%>&nbsp;</td>
</tr>
</table>

Em seguida necessrio que seja includo na tabela de vendas o valor respectivo no campo
valorfrete, e iremos para isso, utilizar o mtodo Execute, atravs do cdigo abaixo:

28/35

<td width="50%"><%=formatcurrency(session("valorfrete"))%>&nbsp;</td>
<td width="50%"><%=formatcurrency(valortotalpedido)%>&nbsp;</td>
</tr>
</table>
</div>
<%
conexao.execute("update vendas set
valorfrete="&replace(formatnumber(session("valorfrete"),2),",",".")&"where
codigovenda="&session("codigodestavenda")_
%>
<p>Qual a forma de pagamento que prefere utilizar:</p>
<form method="POST" action="fechavenda.asp">

e finalmente temos que finalizar o IF, antes do fechamento desta pgina:


</div>
<p><input type="submit" value="Confirma" name="B1"></p>
</form>
<p>&nbsp;</p>
<%end if%>
</body>

29/35

A partir deste ponto iremos trabalhar com a pgina fechavenda.asp, que tem o objetivo de
proporcionar ao cliente do site escolher a forma de pagamento, ou seja, via boleto bancrio
ou carto de crdito.
Abaixo, o cdigo HTML da pgina:
<html>
<head>
<title>Selecionando a forma de pagamento</title>
</head>
<body>
<p align="center"><img border="0" src="loja1_1.jpg"></p>
<p align="center">Selecionando a forma de pagamento</p>
<hr>
<p align="left"><font color="#000080">Via boleto bancrio:</font></p>
<form method="POST" name="fechamento.asp">
<p align="left"><font color="#000080">Clique no boto abaixo para realizar a
impresso do boleto bancrio. Aps o pagamento do mesmo, envie um
fax/e-mail para <a
href="mailto:aprendaemcasa@aprendaemcasa.com.br">aprendaemcasa@aprendaemcasa.com.
br</a>,
com a sua via do comprovante de pagamento. Caso no exista o pagamento at a
data do vencimento, ignorar o boleto e solicitar um novo.</font></p>
<p align="center"><input type="submit" value="Continuar" name="B1"></p>
</form>
<p align="left"><font color="#FF0000">Via carto de crdito:</font></p>
<form method="POST" name="fechamento.asp">
<div align="justify">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="50%"><font color="#FF0000">Nome do carto </font></td>
<td width="50%"><font color="#FF0000"><input type="radio"
value="American" checked name="Cartao">American
Express <input type="radio" name="Cartao"
value="Mastercard">Mastercard</font></td>
</tr>
<tr>
<td width="50%"><font color="#FF0000">Seu nome como aparece no
carto</font></td>
<td width="50%"><font color="#FF0000"><input type="text"
name="nomecartao" size="45"></font></td>
</tr>
<tr>
<td width="50%"><font color="#FF0000">Nmero do carto</font></td>
<td width="50%"><font color="#FF0000"><input type="text"
name="numerocartao" size="45"></font></td>
</tr>
<tr>
<td width="50%"><font color="#FF0000">Validade do carto</font></td>
<td width="50%"><font color="#FF0000"><input type="text"
name="validadecartao" size="45"></font></td>
</tr>
</table>
</div>
<p align="center"><input type="submit" value="Continuar" name="B1"></p>
</form>
</body>
</html>

30/35

O primeiro passo, em codificao ASP verificar se a sesso vlida, ento no


inicio da codificao da pgina, insira o cdigo a seguir:
<!-#INCLUDE FILE="utilitarios.asp"->
<%
call validar_sessao()
<html>

Estando a sesso ativa, ou seja, vlida, o prximo passo inserir na tabela de vendas os
dados do cliente:
<!-#INCLUDE FILE="utilitarios.asp"->
<%
call validar_sessao()
set conexao=server.createobject("ADODB.connection")
conexao.open application("stringconexao")
conexao.execute("update vendas set data=#"&now&#, nome='"&request("nome")&"',
cpf='"&request("cpf")&"',endereco='"&request("endereco")&"',cidade='"&request("ci
dade")&"',uf='"&request("uf")&"',cep='"&request("CEP")&"',email='"&request("email
")&"'formapagamento='"&request("formapagamento")&"',valorvenda="&session("valorto
talpedido")&" where codigovenda="&session("codigodestavenda"))
%>
<html>

A nossa pgina, tem na verdade duas sesses distintas, uma para o pagamento via carto de
crdito e outra para o pagamento via boleto bancrio, e este tipo de situao ser tratada em
ASP, onde ser realizado uma espcie de anlise da varivel formapagamento, utilizada no
formulrio anterior.
<p align="left"><font color="#000080">Via boleto bancrio:</font></p>
<%
if request.form("formapagamento")="boletobancario" then
session("formapagamento")="boleto"
vencimento= formatdatetime(dateadd("d",5,now),2)
valortotal=session("valortotalpedido")+session("valorfrete")
set nboleto=server.createobject("ADODB.recordset")
nboleto.open "select max(numero) as maiornumero from boleto", conexao
if not nboleto.eof then
session("numboleto")=nboleto("maiornumero")+1
else
session("numboleto")=1
endif
nboleto.close
%>
<form method="POST" name="fechamento.asp">
<p align="left"><font color="#000080">Clique no boto abaixo para realizar a
impresso do boleto bancrio. Aps o pagamento do mesmo, envie um
fax/e-mail para <a
href="mailto:aprendaemcasa@aprendaemcasa.com.br">aprendaemcasa@aprendaemcasa.com.
br</a>,
com a sua via do comprovante de pagamento. Caso no exista o pagamento at a
data do vencimento, ignorar o boleto e solicitar um novo.</font></p>
<p align="center"><input type="submit" value="Continuar" name="B1"></p>
</form>
<%
else
session("formapagamento")="cartao"%>
<p align="left"><font color="#FF0000">Via carto de crdito:</font></p>
<form method="POST" name="fechamento.asp">

31/35

<div align="justify">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td width="50%"><font color="#FF0000">Nome do carto </font></td>
<td width="50%"><font color="#FF0000"><input type="radio"
value="American" checked name="Cartao">American
Express <input type="radio" name="Cartao"
value="Mastercard">Mastercard</font></td>
</tr>
<tr>
<td width="50%"><font color="#FF0000">Seu nome como aparece no
carto</font></td>
<td width="50%"><font color="#FF0000"><input type="text"
name="nomecartao" size="45"></font></td>
</tr>
<tr>
<td width="50%"><font color="#FF0000">Nmero do carto</font></td>
<td width="50%"><font color="#FF0000"><input type="text"
name="numerocartao" size="45"></font></td>
</tr>
<tr>
<td width="50%"><font color="#FF0000">Validade do carto</font></td>
<td width="50%"><font color="#FF0000"><input type="text"
name="validadecartao" size="45"></font></td>
</tr>
</table>
</div>
<p align="center"><input type="submit" value="Continuar" name="B1"></p>
</form>
<%end if%>

Agora, teremos que criar um link para que o usurio possa ser levado pgina que ter a
funo de imprimir o boleto., este link poder ser criado em qualquer parte do local onde
sero exibidos as informaes sobre o mesmo, sendo que nesta, teremos que levar algumas
informaes da pgina, conforme vimos a seguir:
<form method="POST" name="fechamento.asp">
<p align="left"><font color="#000080">Clique no boto abaixo para realizar a
<a
href="boleto.asp?nome=<%=nome%>&cpf=<%=cpf%>&vencimento=<%=vencimento%>&valor=<&=
formatcurrency(valortotal)%>"></a>
impresso do boleto bancrio. Aps o pagamento do mesmo, envie um
fax/e-mail para <a
href="mailto:aprendaemcasa@aprendaemcasa.com.br">aprendaemcasa@aprendaemcasa.com.
br</a>,

32/35

O primeiro passo a construo da pgina boleto.asp. Esta pgina possui um particular, que
justamente o componente que ser utilizado para a criao do boleto bancrio de forma
on-line.
Atualmente, existem uma srie de empresas que fornecem tais componentes com boletos
pr-construdos. Entre vrios sites que fornecem estes, podemos destacar:
www.thisf.com.br
www.asw.com.br
www.bradesco.com.br ( para clientes da carteira eletrnica Bradesco )
www.itau.com.br ( para clientes da carteira eletrnica Bradesco ).
Aps selecionar aquele que melhor se adapta as suas necessidades, voc dever levar para o
diretrio que armazena a sua aplicao os arquivos DLL, BMP, EXE que o compe, e
estudar o manual de instalao/operao do mesmo, pois a pgina boleto.asp s ter a
funo de passar os dados recuperados da pgina anterior para o boleto, e este componente
ser responsvel pelas funes de visualizao/impresso.
Em todos os sites citados acima, voc ter as instrues necessrias para incluir os dados
que podemos chamar de fixos no boleto, ou seja, a conta do destinatrio, o nmero da
carteira de cobrana e o banco dos mesmos, titular da conta, etc...
Aps esta configurao, basta construir a pgina boleto.asp conforme mostramos a seguir:
<html>
<head>
<title>Imprime boleto</title>
</head>
<body>
<img scr = http: / / www.seusite.com.br/nome_componente.dll? conta=
nome_banco&datadoc=<%Formatdatetime(now,2)%>&numdoc=<%=session(numboleto
)%>&vencimento=<%request(vencimento)%>&valor=<%=formatcurrency(request(val
ortotal))%>&sacado=<%=request(nome)%>&cpf=<%=request(cpf)%>
</body>
</html>
Observe que, voc apenas est passando os parmetros necessrios para a construo do
boleto, e dependendo deste, alguns nomes de variveis prprias do boleto podero ser
alteradas,
como
por
exemplo,
DATADOC
poder
ser
chamado
de
DATADODOCUMENTO, pois tais parmetros so estipulados por uma biblioteca DLL.
Nosso prximo passo criar a pgina fechamento.asp, que ter a funo de exibir um
resumo geral de tudo o que foi realizado e enviar um e-mail para o cliente confirmando a
compra do curso.
Veja a seguir o cdigo completo da pgina, que no traz novidades com relao a
comandos, apenas com relao a forma de utilizao:
33/35

<%
set conexao=server.createobject("ADODB.Connection")
conexao.open application("Stringconexao")
Set fcursosadquiridos=server.createobject("adodb.recordset")
Set fcursos=Server.CreateObject("ADODB.Recordset")
Set fvendas=Server.createobjects("ADODB.recordset")
if session("formapagamento")="cartao" then
conexao.execute("update vendas set
cartao='"&request("cartao")&"',nomecartao='"&request("nomecartao")&"',numerocarta
o='"&request("numerocartao")&"' where codigovenda="&session("codigodestavenda"))
else
conexao.execute("update vendas set
numeroboleto='"&session("numeroboleto")&"'where
codigovenda="&session("codigodestavenda"))
conexao.execute("insert into boleto (numero)
values("&session("numeroboleto")&")")
end if
const forreading=1, forwriting=2, forappending=8
const tristatefalse=0
const shortdate=2
dim fso, t
set fso=createobject("Scripting.filesystemobject")
set t=fso.opentextfile("http://www.seusite.com.br/resumocompra.txt",
forappending, tristatefalse)
fvendas.open "Select * from vendas where
codigovenda="&session("codigodestavenda"),conexao
t.writeline("Dados da compra de cursos"))
t.writeline("Nome :"&fvendas("nome"))
t.writeline("CEP do aluno :"&fvendas("cep"))
t.writeline("Forma de pagamento :"&fvendas("formapagamento"))
t.writeline("Cartao :"&fvendas("nomecartao"))
t.writeline("Numero :"&fvendas("numerocartao"))
t.writeline("Numero do boleto :"&fvendas("numeroboleto"))
fcursosadquiridos.open "Select * from itensvenda where
codigovenda="&session("codigodestavenda"),conexao
do while not fcursosadquiridos.eof
fcursos.open "select * from cursos where
codigocurso="&fcursosadquiridos.fields("codigocurso"),conexao
t.writeline("curso :"&fcursos.fields("titulo"))
fcursos.close
fcursosadquiridos.movenext
loop
flivrosadquiridos.close
t.close
dim email
email="Prezado aluno "&fvendas("nome")& ":"&chr(10)
email=email&"Abaixo, os dados gerais de sua matricula"&chr(10)
email=email&fvendas("nome")&chr(10)&fvendas("email")&chr(10)
email=email&chr(10)&"forma de pagamento :"&fvendas("formapagamento")&chr(10)
email=email&"Numero cartao :"&fvendas("numerocartao")&chr(10)
email=email&"Numero boleto :"&fvendas("numeroboleto")
fcursosadquiridos.open "select * from itensvenda where
codigovenda="&session("codigodestavenda"),conexao
do while not fcursosadquiridos.eof
fcursos.open "Select * from cursos where
codigocurso="fcursosadquiridos.fields("codigocurso"),conexao
email=email&"Curso : "&fcursos.fields("Curso")
fcursos.close
fcursosadquiridos.movenext
loop
fcursosadquiridos.close
set mailer=server.createobject("CDONTS.Newmail")

34/35

if (not mailer is nothing) then


mailer.from="aprendaemcasa@aprendaemcasa.com.br"
mailer.to=fvendas("email")
mailer.subject="Inscricao nos cursos do Projeto Aprenda em Casa"
mailer.body=email
set mailer=nothing
end if
%>
<html>
<head>
<title>Confirmao de compra de cursos do Projeto Aprenda em Casa</title>
</head>
<body>
<p align="center"><img border="0" src="loja1_1.jpg" width="580" height="150"></p>
<p align="center">Confirmao de compra de cursos do Projeto Aprenda em Casa</p>
<hr>
<p align="left">Obrigado, voc mais um aluno do Projeto Aprenda em Casa.
Estamos enviando ao seu endereo eletrnico, um e-mail confirmando sua
aquisio. Em breve seu curso ter inicio.</p>
<p align="left">&nbsp;</p>
</body>
</html>

Observe que neste exemplo, no conferimos por exemplo se o CPF do cliente vlido ou
no, bem como se o nmero do carto de crdito fornecido vlido ou no.
Para isso, teramos que criar novas funes no arquivo utilitarios.asp e, tais funes, so
fornecidas atualmente pelos bancos, administradoras de cartes, etc...

35/35

You might also like