Elektronický obchod v ASP – objednávka

10. září 2002

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.

Předchozí článek Crish.cz
Další článek Toulky po webu 8.
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *