Elektronický obchod v ASP – objednávka
Vytváříte-li si s námi svůj internetový obchod, dozvíte se, jak připravit objednávku a vše, co s ní souvisí. Zákazníci pak již budou moci nakupovat.
Celý proces objednávání bude mít na starost ASP stránka objednat.asp. Skript na této stránce bude rozdělen do dvou fází. Nejdříve zobrazí obsah nákupního košíku, obchodní podmínky a formulář pro vyplnění osobních dat. Po odeslání formuláře zkontroluje zadaná data, odešle je na zadaný e-mail provozovatele a na e-mail objednávajícího.
Zobrazení nákupního košíku, obchodních podmínek a formuláře
Na začátek stránky budeme muset vložit soubor konstanty.asp, abychom mohli využívat v něm nadefinované konstanty pro jednodušší práci s nákupním košíkem (viz článek Elektronický obchod v ASP – nákupní košík). Poté načteme data z nákupního košíku a proměnnou intPocetPolozek
z objektu Session. Tyto proměnné budeme potřebovat ke zobrazení košíku. Zákazník by totiž měl mít možnost těsně před objednávkou vidět, jaké zboží objednává a kolik ho to bude stát.
<!– #include file=“includes/konstanty.asp“ –>
<%
Dim arrKosik, intPocetPolozek, intI, intCelkem
‚deklarace proměnných
ReDim arrKosik(cintMaxPocetPolozek, cintVlastnosti)
‚vytvoření košíku na úrovni stránky (skriptu)
arrKosik = Session(„arrKosik“)
‚naplnění košíku na úrovni skriptu daty z košíku na úrovni Session
intPocetPolozek = Session(„intPocetPolozek“)
‚načtení počtu položek z proměnné na úrovni Session
%>
Skript pro zobrazení nákupního košíku bude podobný jako na stránce kosik.asp. Jedná se již o zobrazení konečné podoby nákupního košíku před objednávkou, proto nebude mít zákazník možnost nic změnit. Budou tedy chybět editační pole u množství zboží, odkaz na vymazání jednotlivých položek z košíku a ovládací tlačítka.
<table width=“75%“ align=“center“ border=“1″>
<tr>
<td><b>Název (Výrobce)</b></td>
<td width=“80″><b>Cena za kus</b></td>
<td width=“80″><b>Množství</b></td>
<td width=“100″><b>Cena za položku</b></td>
</tr>
<%
intCelkem = 0
If intPocetPolozek > 0 Then
For intI = 0 To intPocetPolozek – 1
If arrKosik(intI, cintZobrazit) = true Then
‚pro každou položku, je-li viditelná
Response.Write(„<tr>“)
Response.Write(„<td>“ & arrKosik(intI, cintNazev) & “ (“ & arrKosik(intI, cintVyrobce) & „)</td>“)
Response.Write(„<td>“ & arrKosik(intI, cintCena) & “ Kč / kus</td>“)
Response.Write(„<td> “ & arrKosik(intI, cintMnozstvi) & “ </td>“)
Response.Write(„<td><b>“ & (arrKosik(intI, cintCena) * arrKosik(intI, cintMnozstvi)) & “ Kč</b></td>“)
Response.Write(„</tr>“)
‚zapiš řádek nákupního košíku
intCelkem = intCelkem + (arrKosik(intI, cintCena) * arrKosik(intI, cintMnozstvi))
‚připočítej k celkové sumě cenu položky
End If
Next
Response.Write(„<tr>“)
Response.Write(„<td colspan=3>Počet položek:</td>“)
Response.Write(„<td>“ & intPocetPolozek & „</td>“)
Response.Write(„</tr>“)
‚vypiš počet položek
Response.Write(„<tr>“)
Response.Write(„<td colspan=3>Celková cena včetně DPH a slev:</td>“)
Response.Write(„<td><b>“ & intCelkem & “ Kč</b></td>“)
Response.Write(„</tr>“)
‚vypiš celkovou cenu
End If
%>
</table>
Po zobrazení konečného obsahu nákupního košíku by měly následovat obchodní podmínky. Text obchodních podmínek může být buď vložen přímo do stránky nebo formou odkazu – např.:
<p>
<a href=“podminky.html“ target=“_blank“>Obchodní podmínky</a>
</p>
Poslední částí první fáze objednávky z našeho elektronického obchodu je zobrazení formuláře pro získání dat od uživatele. Formulář bude odeslán ke zpracování stejné stránce, objednat.asp, metodou POST, aby se citlivá osobní data nezobrazovala v adresním řádku prohlížeče. Vhodné by také bylo celý proces objednávky zabezpečit systémem SSL.
<form action=“objednat.asp“ method=“post“>
Firma: <input type=“text“ name=“firma“><br>
*Jméno: <input type=“text“ name=“jmeno“><br>
*Příjmení: <input type=“text“ name=“prijmeni“><br>
*Adresa: <input type=“text“ name=“adresa“><br>
*Obec: <input type=“text“ name=“obec“><br>
*PSČ: <input type=“text“ name=“psc“><br>
*Telefon: <input type=“text“ name=“telefon“><br>
*E-mail: <input type=“text“ name=“email“><br>
IČO: <input type=“text“ name=“ico“><br>
DIČ: <input type=“text“ name=“dic“><br>
Způsob dodávky: <input type=“radio“ name=“dodavka“ value=“dob“>Dobírka, <input type=“radio“ name=“dodavka“ value=“osob“>Osobní odběr, <input type=“radio“ name=“dodavka“ value=“sped“>Spedice<br>
Způsob platby: <input type=“radio“ name=“platba“ value=“hot“>Hotově, <input type=“radio“ name=“platba“ value=“fak“>Faktura<br>
<input type=“checkbox“ name=“podminky“ value=“ano“>Souhlasím s obchodními podmínkami<br>
Všechny položky označené * musejí být vyplněny!<br>
<input type=“submit“ name=“odeslat“ value=“Odeslat“>
</form>
První fázi objednávky máme odesláním formuláře s osobními daty za sebou. Druhá část bude probíhat výhradně na straně serveru.
Kontrola vložených dat a odeslání objednávky
Nejdříve na serveru zkontrolujeme, zda byl formulář odeslán a mají-li se data zpracovávat. Poté načteme data z formuláře do proměnných, u položek dodavka a platba umístíme místo hodnot zaslaných formulářem (dob/osob/sped a hot/fak) text (dobírka/osobní odběr/spedice a hotově/faktura). Po naplnění proměnných budou všechny povinné položky zkontrolovány, zda nemají nulovou délky. Tato kontrola je pouze základní. Položky jako e-mail, IČO a PSČ by se daly ještě zkontrolovat dalšími algoritmy buď na straně klienta nebo na straně serveru. Zkontrolujeme také, jestli zákazník souhlasil s našimi obchodními podmínkami.
<%
If LCase(Request.Form(„odeslat“)) = „odeslat“ Then
Dim strFirma, strJmeno, strPrijmeni, strAdresa, strObec, strPSC, strTelefon, strEmail, strICO, strDIC, strDodavka, strPlatba, boolError
Dim strMail, objMail
‚deklarace proměnných
boolError = false
‚nastav chybu na false
strFirma = Request.Form(„firma“)
strJmeno = Request.Form(„jmeno“)
strPrijmeni = Request.Form(„prijmeni“)
strAdresa = Request.Form(„adresa“)
strObec = Request.Form(„obec“)
strPSC = Request.Form(„psc“)
strTelefon = Request.Form(„telefon“)
strEmail = Request.Form(„email“)
strICO = Request.Form(„ico“)
strDIC = Request.Form(„dic“)
‚načtení hodnot formuláře do proměnných
Select Case Request.Form(„dodavka“)
Case „dob“
strDodavka = „dobírka“
Case „osob“
strDodavka = „osobní odběr“
Case „sped“
strDodavka = „spedice“
Case Else
boolError = true
End Select
Select Case Request.Form(„platba“)
Case „hot“
strPlatba = „hotově“
Case „fak“
strPlatba = „faktura“
Case Else
boolError = true
End Select
‚podle hodnoty zadané ve formuláři budou přiřazeny proměnné strDodavka a strPlatba
If Len(strJmeno) = 0 Then boolError = true
If Len(strPrijmeni) = 0 Then boolError = true
If Len(strAdresa) = 0 Then boolError = true
If Len(strObec) = 0 Then boolError = true
If Len(strPSC) = 0 Then boolError = true
If Len(strTelefon) = 0 Then boolError = true
If Len(strEmail) = 0 Then boolError = true
‚zkontroluj hodnoty, pokud jsou pole prázdné, nastav chybu na true
If not LCase(Request.Form(„podminky“)) = „ano“ Then boolError = true
‚když zákazník nesouhlasí s podmínkami, nastav chybu na true
Jakmile jsou všechny povinné položky vyplněny a zákazník souhlasí s obchodními podmínkami, vytvoříme text e-mailové zprávy, která bude obsahovat soupis zboží v nákupním košíku a údaje o objednávajícím. Nakonec vytvoříme instanci objektu CDONTS.NewMail a nastavíme potřebné vlastnosti: Předmět, Důležitost (0-nejnižší, 2 – nejvyšší), Příjemce e-mailu, Příjemce kopie e-mailu, Formát těla zprávy (HTML / text), Formát zprávy (MIME / text), Odesílatele.
Příjemce zprávy bude náš zákazník; kopii zprávy zašleme na naši e-mailovou adresu; formát těla e-mailu nastavíme na HTML (hodnota 0), protože používáme HTML značky; formát zprávy bude MIME; a důležitost zprávy nastavíme na nejvyšší: 2. Po odeslání objednávky přesměrujeme zákazníka na úvodní nebo jinou stránku.
If boolError = false Then
‚v případě, že chyba nanastala, vytvoř tělo zprávy a odešli e-mail
strMail = „<table width=75% align=center border=1>“
strMail = strMail & „<tr>“
strMail = strMail & „<td><b>Název (Výrobce)</b></td>“
strMail = strMail & „<td width=80><b>Cena za kus</b></td>“
strMail = strMail & „<td width=80><b>Množství</b></td>“
strMail = strMail & „<td width=100><b>Cena za položku</b></td>“
strMail = strMail & „</tr>“
intCelkem = 0
If intPocetPolozek > 0 Then
For intI = 0 To intPocetPolozek – 1
If arrKosik(intI, cintZobrazit) = true Then
‚pro každou položku, je-li viditelná
strMail = strMail & „<tr>“
strMail = strMail & „<td>“ & arrKosik(intI, cintNazev) & “ (“ & arrKosik(intI, cintVyrobce) & „)</td>“
strMail = strMail & „<td>“ & arrKosik(intI, cintCena) & “ Kč / kus</td>“
strMail = strMail & „<td> “ & arrKosik(intI, cintMnozstvi) & “ </td>“
strMail = strMail & „<td><b>“ & (arrKosik(intI, cintCena) * arrKosik(intI, cintMnozstvi)) & “ Kč</b></td>“
strMail = strMail & „</tr>“
‚zapiš řádek nákupního košíku
intCelkem = intCelkem + (arrKosik(intI, cintCena) * arrKosik(intI, cintMnozstvi))
‚připočítej k celkové sumě cenu položky
End If
Next
strMail = strMail & „<tr>“
strMail = strMail & „<td colspan=3>Počet položek:</td>“
strMail = strMail & „<td>“ & intPocetPolozek & „</td>“
strMail = strMail & „</tr>“
‚vypiš počet položek
strMail = strMail & „<tr>“
strMail = strMail & „<td colspan=3>Celková cena včetně DPH a slev:</td>“
strMail = strMail & „<td><b>“ & intCelkem & “ Kč</b></td>“
strMail = strMail & „</tr>“
‚vypiš celkovou cenu
End If
strMail = strMail & „</table>“
strMail = strMail & „<p>“
strMail = strMail & „Firma: “ & strFirma & „<br>“
strMail = strMail & „Jméno: “ & strJmeno & „<br>“
strMail = strMail & „Příjmení: “ & strPrijmeni & „<br>“
strMail = strMail & „Adresa: “ & strAdresa & „<br>“
strMail = strMail & „Obec: “ & strObec & „<br>“
strMail = strMail & „PSČ: “ & strPSC & „<br>“
strMail = strMail & „Telefon: “ & strTelefon & „<br>“
strMail = strMail & „E-mail: “ & strEmail & „<br>“
strMail = strMail & „IČO: “ & strICO & „<br>“
strMail = strMail & „DIČ: “ & strDIC & „<br>“
strMail = strMail & „Způsob dodání: “ & strDodavka & „<br>“
strMail = strMail & „Způsob platby: “ & strPlatba & „<br>“
strMail = strMail & „</p>“
‚vytvoř tělo zprávy
Set objMail = Server.CreateObject(„CDONTS.NewMail“)
‚vytvoř objekt pro odesílání e-mailů
objMail.To = strEmail
‚nastav příjemce
objMail.Cc = „eshop@obchod.cz“
‚nastav příjemce kopie – elektronický obchod
objMail.BodyFormat = 0
‚nastav typ zprávy na HTML
objMail.From = „eshop@obchod.cz“
‚nastav odesílatele e-mailu
objMail.Importance = 2
‚nastav vysokou důležitost
objMail.MailFormat = 0
‚nastav formát e-mailu na MIME
objMail.Subject = „Elektronický obchod v ASP – Objednávka“
‚předmět zprávy
objMail.Body = strMail
‚tělo zprávy
objMail.Send
‚odešli e-mail
Response.Redirect(„default.html“)
‚přesměruj na úvodní stránku
End If
End If
%>
Nakonec si můžete stáhnout zdrojové kódy a ukázkový elektronický obchod.
Tím skončil celý objednací proces. Zákazníci již mohou v našem obchodě nakupovat, ale jak přidat do obchodu další kategorie, další zboží? O tom bude příští díl našeho seriálu.
Mohlo by vás také zajímat
-
Nepodceňte UX na vašem webu: Proč na něm záleží?
10. dubna 2024 -
Užitečné nástroje pro bezpečnost na internetu
17. října 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024