En integration av betalningssystem på hemsida



Relevanta dokument
Pyramid Business Studio - e-line & Betalkort

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

Förbättring av Hofors kommuns hemsida: Socialtjänsten

Så här betalar du med kort

DIBS Manager. En introduktion till ditt administrationsverktyg på Internet

ASP.NET Thomas Mejtoft

Fråga: Hur beställer jag? Svar: För att läsa mer om hur du handlar på linghageshop.com ska du läsa sidan: Så handlar du.

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Mamut Business Software. Introduktion. Mamut Enterprise DIBS

Hur handlar jag på nätet?

Skicka e-faktura via webben till Schenker

Internetsäkerhet. banktjänster. September 2007

Så här bokar du biljett på..se

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Frågor och svar om Uppsägning av Telia Mobil plånbok och skaffa WyWallet (Extern)

Mamut Enterprise DebiTech

Manual för laddning av gäst- eller kårkort inom Chalmers Konferens & Restaurangers verksamhet

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

I båda fallen är din färdiga profil (eller delar av den) sparad så att du kan se den i Tidigare profiler

Snabbguide: Hur man öppnar en egen nätbutik

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Användarhandledning. edwise Webbläsarinställningar

Kreditkortshantering online med Mamut Pro. WorldPay

Dokumentation POST-API version 1.0

DIBS Manager. En introduktion till ditt administrationsverktyg på Internet

Integration av betalningslösningar i Travelize

Kortbetalning i Rebus via Paynova

Sk dd y.com e-hand l e Så kommer du igång

e-line Kort- och Bankbetalning

Lathund. Uppsökande verksamhet i Tandvårdsfönster

Manual Attestering av fakturor på webb

Beskrivning om hur du ansöker om godkännande av spridningsutrustning för växtskyddsmedel

Slutrapport för JMDB.COM. Johan Wibjer

Viktiga inställningar för Isolda webshop

Användarhandledning. edwise Webbläsarinställningar

Om inte denna rekommendation efterföljs kan vi tyvärr inte ge några garantier för att vi kan supportera de problem som då kan uppstå.

Handbok Mäklare Direkt Innehåll

Laboration 3 i kursen Produktion för tryckta medier och webb: Webbplatsproduktion med ett publiceringssystem

Hemsideutveckling för Anjool AB

Kontraktsprogrammering

Manual för laddning av gästkort i företag xxxxxxxx

RestaurangOnline är en tjänst som ger din restaurang möjlighet att sälja mat på nätet och direkt genom dina kunders mobiltelefoner.

Övning: Arbeta med Azure Explorer

Detta är en manual om hur man lägger in e-butiksystemet Ecwid på N.nu. Gjord av SussCreations

Lättläst om Nordea internetbank

Användarmanual HOIF.org

Den mobila handelslösningen som förenklar din affär

Mamut Business Software. Introduktion. Mamut Enterprise DIBS

Webbserver och HTML-sidor i E1000 KI

The Klarna story: framtiden för näthandel och mobilhandel

Instruktioner för studenter

Kom igång med Swish i kassan!

JavaScript del 3 If, Operatorer och Confirm

Kom igång med din butik. 1. Skapa kategorier och produkter 2. Att göra en beställning i butiken 3. Övriga verktyg

INNEHÅLL. INNEHÅLL 30 juni Administrera din butik 2. 2 Lägg in dina första varor och artiklar 4. 3 Butiksinställningar 8

Samarbete Paxess PayZone

Handbok för kortbetalningar med Babs Paylink/Point

Lathund för publicering i KI Commons wikitjänst

Notera att flertalet av fälten är markerade med * vilket innebär obligatoriska fält att fylla i för att komma vidare i formuläret.

Manual Attestering av fakturor på webb

Bild 1. Bild 2. Bild 3. Etrappa. Gävle-Dala E-marknad 2013

Responsiv webbplats. Tips på hur innehållet ska ses över för en bra användarupplevelse på alla skärmstorlekar

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Lathund. Hantera boendeenheter i Tandvårdsfönster

payex Så skapar du ett PayEx-konto IT-avdelningen

Streamingbolaget hjälp!"#$%&'()*+,%)$" Sida 1 av 9

Guide i hur man arbetar med vår butik från WebbButiker.se

Projektplan för Website Project Japan

KOM IGÅNG-GUIDE. för att ta betalt på nätet. Vi gör det enkelt att ta betalt

Kontakta de olika support avdelningarna OPN / SiteTalk. Gå och logga in klicka sedan på Support och välj Lägg till nytt meddelande

Guide till Mynewsdesk Hosted Newsroom - Kom igång och spegla ditt pressrum!

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Hja lp till Mina sidor

AIF:arens guide till cyberrymden

Pengar är för de flesta av oss en begränsad resurs d v s vi har bara en begränsad summa pengar per vecka eller månad att hushålla med.

Skapa epublikationer för Webben & Mobila Enheter

Projektarbete myshop. Sandra Öigaard so222es WP12 Individuellt mjukvaruutvecklingsprojekt

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

Frontpage 2002/XP (2)

Inlämningsarbete Case. Innehåll Bakgrund bedömning inlämningsarbete... 2 Inlämnade arbeten... 4

Klarna in-store. Excellence Retail. Copyright FDT AB Köpmangatan LULEÅ

Användarhandledning. edwise Webbläsarinställningar

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

(Vid tekniska problem, kontakta Mapaz Support, )

Publiceringsverktyget

Manual för version V2

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Guide. Webbsidor i Studentportalen. Innehåll. Uppdaterad:

Manual för laddning av elev-tagg på Språkskolan

Uppdaterad: Lathund. Anslagstavlan

Manual Attestering av fakturor på webb

E12 "Evil is going on"

Hur kommer jag igång?

Användarmanual. Visma TendSign Basic. Uppdaterad VISMA COMMERCE AB

3. Författare: Ange samtliga författare. Gör så här:

Lathund publiceringsverktyget

Denna text innehåller köpvillkor och består av följande delar:

Introduktion och Guide till WMR

Transkript:

Beteckning: Akademin för teknik och miljö En integration av betalningssystem på hemsida Benjamin Leetmaa Maj 2011 Examensarbete, 15 högskolepoäng, B Datavetenskap Ingenjör Online Examinator: Bengt Östberg Handledare: Carina Pettersson

En integration av betalningssystem på hemsida av Benjamin Leetmaa Akademin för teknik och miljö Högskolan i Gävle S-801 76 Gävle, Sweden Email: benjaminleetmaa@gmail.com. Abstrakt Detta projekt drevs på uppdrag av Optikbutiken som behövde en tjänst där man kunde betala sin order med hjälp av kreditkort på deras aktuella hemsida. Det här projektet gick ut på att integrera DIBS vilket är ett betalsystem för kreditkort. Utvecklingen skedde i Visual Studio miljö. De krav som ställdes upp för det här projektet blev uppfyllda. Nyckelord: DIBS, ASP, Visual Studio, C# 2

Innehållsförteckning 1 Inledning...4 2 Kravspecifikation...5 2.1 Kravspecifikation för implementation på webbplatsen...5 2.2 Kravspecifikation för implementation på DIBS...5 3 Teknisk bakgrund...5 3.1 Vad är DIBS?...5 3.2 Vad är jquery?...5 4 Genomförande...6 4.1 Optikbutiken.se...6 4.2 Implementering av DIBS...6 5 Resultat...8 5.1 Slutresultat Webb...8 5.1.1 Buy.aspx...8 5.1.2 Buy.aspx.cs...8 5.1.2 Dibs.aspx.cs...9 5.1.2 Dibs_httpreport.aspx.cs...9 5.2 Slutresultat DIBS Manager...9 6 Diskussion...10 7 Slutsats...10 8 Referenser...10 Bilaga 1: Kod...11 3

1 Inledning Det här projektet drevs på uppdrag av Optikbutiken genom BinaryLogic. Optikbutiken grundades 2004 av två bröder, Glenn och Patrick Johansson. Bägge bröderna, som har jobbat som optiker under flera år, blev trötta på den snedvridna prissättningen inom branchen och skapade därför Optikbutiken.se (Figur 1). Optikbutiken har förutom webbförsäljningen en fysisk butik i Falkenberg (enligt deras webbplats [1]). Optikbutiken.se är en webbplats som har ett sortiment på över 1000 olika bågar. Bågarna är uppdelade i dambågar, herrbågar och barnbågar. När man gör ett köp via optikbutiken.se kan kunden i dag bara betala med faktura. Målet med det här projektet är att implementera ett betalningsalternativ för köp av bågar. Man ska kunna betala med sitt kreditkort. Figur 1. Bilden visar en skärmdump av förstasidan på optikbutiken.se 4

2 Kravspecifikation Uppgiften består i att implementera ett betalsystem på optikbutiken.se. 2.1 Kravspecifikation för implementation på webbplatsen Anpassa nuvarande köpsteg på optikbutiken.se under ett glasögonköp. En ny kategori välj betalningsätt måste läggas till under sista steget i köpprocessen. Under denna kategori ska två val finnas. Faktura och Kreditkort. Om kreditkort väljs ska en ny ruta öppnas för att fylla i sina kortuppgifter. Denna ruta ska ha samma grafiska utseende som själva webbplatsen. Slutligen måste ett sista steg i köpprocessen implementeras för meddelande om ett godkänt eller misslyckat köp. 2.2 Kravspecifikation för implementation på DIBS Ett konto måste skapas på DIBS med tjänsten DIBS Internet. På detta konto ska sedan själva skalet för betalningssidorna kodas, dvs de sidor som visas när man ska skriva in kortnummer. Man behöver också bestämma vilka parametrar som ska skickas med vid ett godkänt resp. en avvisad transaktion. 3 Teknisk bakgrund Det här avsnittet beskriver vad DIBS är. Det beskriver också jquery som krävdes för att få optikbutiken.se att öppnas som en ruta istället för att hänvisas till en annan sida. 3.1 Vad är DIBS? DIBS Payment Services AB (publ) är en betalväxel för e-handel och butiksbetalningar grundat 1998. DIBS har flera olika produkter att erbjuda. DIBS Internet, DIBS Telefon o Post, DIBS Detaljhandel. Detta projekt inriktar sig dock på DIBS Internet. DIBS Internet är en säker betalningslösning för företag med försäljning över Internet och som önskar ta emot onlinebetalning med bank och kreditkort (enligt deras webbplats[4]). Enligt di.se [5] är det Nordens ledande oberoende leverantör av funktionella, säkra och innovativa betaltjänster för handel via Internet. Detta projekt kommer att implementera onlinebetalning med bank och kreditkort (visa och mastercard). 3.2 Vad är jquery? jquery är ett javascriptbiblotek som ska kunna fungera på alla webbläsare [2]. jquery biblioteket är en enda stor JavaScriptfil. Denna fil innehåller alla biblotekets funktioner. Filen kan inkluderas på en webbsida med följande kodrad: <script type="text/javascript" src="jquery.js"></script> Prettyphoto är en klon av jquery och stöder video, flash och youtube, iframes och ajax [3]. Det är med hjälp av prettyphoto som betalningsrutan öppnas och stängs. 5

4 Genomförande Koden för DIBS rutan som öppnas på otikbutiken.se kodades på DIBS Manager i HTML. Koden för webbplatsen utfördes i Microsoft Visual Studio 2010, här i C- Sharp. Debuggern till Visual Studio användes vid kodningen av webbplatsen. När det gäller debugg på DIBS Manager fanns det en debugger som man kunde testa sina managersidor på (de sidor som visas vid kortköp). Här använde jag mig av DIBS Manager Manual som fanns tillgänglig att ladda ner på DIBS webbplats [6]. Man kan säga att genomförandet skedde i två steg. Först gjordes ändringarna på optikbutiken.se och sedan kodades DIBS rutan i DIBS Manager. 4.1 Optikbutiken.se Projektet inleddes med att lägga till ett alternativ under sista steget i köpkedjan på optikbutiken.se kallat betalnings alternativ. Två val finns nu att välja, faktura eller kreditkort. Länken till DIBS där själva betalningen genomförs implementerades genom en ruta på optikbutiken.se genom jquery. Optikbutiken skulle också kunna ta emot om betalningen gick igenom eller blev avvisad och stänga ner DIBS rutan. 4.2 Implementering av DIBS När det gällde implementationen av DIBS sidorna så använde jag mig av DIBS Manager Manual och en steglista som fanns tillgänglig på DIBS webbplats [4]. De steg man behöver gå igenom för att integrera webblösning är normalt. 1. Se till att avtalen med DIBS och inlösande banker är klara. Detta bör påbörjas så tidigt som möjligt eftersom det ofta tar tid för bankerna att hantera detta. 2. Konstruera den webbsida som dirigerar om konsumenten till DIBS PaymentGateway. 3. Använd DIBS Manager för att designa betalningsrutorna. 4. Testa genom att använda testmiljön som finns tillgängligt i DIBS Manager. 5. Sätt tjänsten i drift. Berätta för DIBS kundsupport i god tid att du vill sätta din tjänst i drift och se till att din butik är beredd. 6. Testa med riktiga kreditkort innan du låter några kunder börja använda tjänsten. 6

Figur 2 visar hur ett betalningsflöde kan se ut (enligt DIBS webbplats [4]). En skillnaden i min egen implementation är att istället för en popup har jag använt jquery för att öppna betalrutan. Funktionen för att försöka igen efter en misslyckad betalning har jag implementerar på optikbutiken.se istället för på DIBS Server. Figur 2. Visar hur flödet av en betalning går till. 7

5 Resultat I den här delen presenteras de viktigaste funktionerna med hjälp av programkod i två olika avsnitt. Webb och DIBS. 5.1 Slutresultat Webb Under välj betalningssätt kan man nu välja att betala med faktura eller kreditkort (Figur 3). Figur 3 visar resultatet av de ändringar som gjordes på köpstegen på optikbutiken.se. 5.1.1 Buy.aspx Buy.aspx lägger till en kategori på sista steget i betalningen som gör att man kan välja att betala med kreditkort eller med faktura (se bilaga 1). Den lägger också till slutförbeställningsknappen. Funktionen ConfirmBuyButton_Click i Buy.aspx.cs körs när man klickar på knappen. I Buy.aspx kodas också scriptet som öppnar och stänger DIBS rutan (se bilaga 1). 5.1.2 Buy.aspx.cs Funktionen ConfirmBuyButton_Click i Buy.aspx.cs körs när man klickar på slutförbeställningsknappen (se bilaga 1). Om man valt kreditkort på betalningssätt så körs funktionen "LoadDibsLink" som bygger upp länken till DIBS. Sedan simuleras ett klick på DIBS länken. Detta för att dibslänken ska öppnas i en ruta som lägger sig över den befintliga webbplatsen. Funktionen LoadDibsLink bygger upp länken som går till Dibs. De parametrar som skickas in i funktionen är köpets summa och ordernummer. Dibslänken byggs sedan upp med vilket pageset som ska laddas på dibskontot, pris på summan som ska betalas, namn och adressuppgifter, ordernummer, vilken säkerhet som ska användas och vilken länk som ska laddas när köpet är klart, i detta fall optikbutiken/dibs.aspx.cs. 8

5.1.2 Dibs.aspx.cs Dibs.aspx.cs tar emot argument från DIBS och skickar dom vidare till Buy.aspx som stänger DIBS rutan (se bilaga 1). Om betalningen blev godkänd så står det "Tack för din beställning" annars "Din betalning nekades. Vill du försöka igen?". 5.1.2 Dibs_httpreport.aspx.cs När DIBS har verifierat att betalningen har gått igenom skickar den en httprapport till anvisad adress (se bilaga 1). Dibs_httpreport.aspx.cs tar emot en httprapport och lägger till ordern om betalningen är godkänd från DIBS. 5.2 Slutresultat DIBS Manager Koden i DIBS Manager körs när kortbetalningen görs. Den innehåller 2 steg i min implementation. På första steget skriver man i sina kortnummer (Figur 4). På andra genomförs transaktionen. Figur 4 visar resultatet av koden i DIBS manager (steg 1). På DIBS Manager kodades också vad som ska hända om kortbetalningen blir godkänd eller nekad. I mitt fall dirigeras man tillbaks till Dibs.aspx.se på optikbutiken.se med olika parametrar beroende på om betalningen gått igenom eller nekats. 9

6 Diskussion Debuggern till visual studio har varit väldigt användbar när det gällde kodningen av webbplatsen. Däremot har det varit svårt att testa kortköp fullt ut. Det har också varit svårt att testa när en httprapport tas emot från DIBS eftersom detta görs bara vid genomfört köp. Implementationen av kortbetalningen har varit i drift i några veckor och har fungerat bra. En sak som kunde ha lösts annorlunda är försöka igen funktionen om man tex skrivit i fel kortnummer. Den kunde ha lösts som ett steg i DIBS Manager istället för att ha implementerats på webbplatsen. 7 Slutsats Projektet blev klart i tid och kraven blev uppfyllda enligt den framtagna specifikationen. Den har nu använts i antal veckor. Pga den ökade näthandeln och kundernas vana att kunna köpa produkter via webben med sitt kreditkort har denna implementation varit till nytta för optikbutiken.se. Fördelen med kreditkorts betalning är också att de slipper hanteringen med pappersfakturor. Man kan också vara säkrare på att pengarna kommer in till företaget när kunden betalar direkt på hemsidan. 8 Referenser [1]Vår butik I Falkenberg. http://www.optikbutiken.se (2011-04-25) [2]jQuery. http://sv.wikipedia.org/wiki/jquery (2011-04-25) [3]PrettyPhoto.http://www.no-margin-for-errors.com/projects/prettyphotojquery-lightbox-clone (2011-05-15) [4] DIBS. http://www.dibs.se (2011-04-25) [5] di.se. http://di.se/default.aspx? seqno=93526&provider=2&pid=4988&epslanguage=sv (2011-05-24) [6] DIBS Manager Manual. https://secure.incab.se/manager/download/dibsmanagermanual.pdf (2011-05- 24) 10

Bilaga 1: Kod Buy.aspx... <script src="/js/jquery-1.4.2.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" href="/css/prettyphoto.css" type="text/css" media="screen" charset="utf-8" /> <script src="/js/jquery.prettyphoto.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" charset="utf-8"> $(document).ready(function () $("a[rel^='prettyphoto']").prettyphoto( modal: true ); ); function ClosePrettyPhoto(refNo, ok, orderno) var creditcardpaymentoptionbuynotok = document.getelementbyid('<% = CreditCardPaymentOptionBuyNotOkLabel.ClientID %>'); var dibstryagainbutton = document.getelementbyid('<% = DibsTryagainButton.ClientID %>'); var paymentoptioninfotextlabel = document.getelementbyid('<% = PaymentOptionInfoTextLabel.ClientID %>'); var donemessagediv = document.getelementbyid('donemessagediv'); if (ok == 'D') creditcardpaymentoptionbuynotok.innerhtml = 'Betalning ej godkänd. Vill du försöka igen?'; dibstryagainbutton.style.display = 'inline'; if (ok == 'A') dibstryagainbutton.style.display = 'none'; creditcardpaymentoptionbuynotok.style.display = 'none'; donemessagediv.style.display = 'block'; paymentoptioninfotextlabel.innerhtml = 'Din betalning blev godkänd! Ditt Referensnummer är ' + refno + '.'; $.prettyphoto.close(); </script>... <asp:placeholder ID="PaymentOptionPlaceHolder" runat="server"> <div class="standardtext pageheader"> <div class="bottomleft"><h2> Välj betalningssätt</h2></div> </div> <div class="standardline"></div> <div class="standardspace standardtext"> Nedan väljer du det betalningssätt som du vill använda för att genomföra transaktionen.</div> <div style="margin-top:20px;"> <asp:dropdownlist ID="PaymentOptionDropDownList" runat="server" onchange="toggle(this);"></asp:dropdownlist> <asp:label ID="ShowCreditApprovedFalseLabel" runat="server" ></asp:label> <div class="standardline"></div> </div> </asp:placeholder> </div> <div class="standardspace"> <asp:imagebutton ID="BackToStep2Button" ImageUrl="/decor/button_previous.png" OnClick="GotoStep2Button_Click" runat="server" Style="margin-right: 10px;" /> <asp:imagebutton ID="ConfirmBuyButton" ImageUrl="/decor/button_confirmbuy.png" OnClick="ConfirmBuyButton_Click" runat="server" /> </div> </asp:placeholder> Buy.aspx.cs... if (paymentoption == SysInvoice.cPaymentOptionAdvancePayment) PaymentOptionInfoTextLabel.Text = "Förskottsbetalning information..."; else if (paymentoption == SysInvoice.cPaymentOptionCashOnDelivery) PaymentOptionInfoTextLabel.Text = "Postförskotts information..."; else if (paymentoption == SysInvoice.cPaymentOptionVisaMasterCard) loadeddibslink = LoadDibsLink(completeOrder.TotalAmountInclVat, order.orderno); DibsTryagainButton.Attributes.Add("href", loadeddibslink); DibsTryagainButton.Attributes.Add("rel", "prettyphoto[iframes]"); ClientScript.RegisterStartupScript(this.GetType(), "doclick", "<script language='javascript'>$ (document).ready(function () " + "$.prettyphoto.open('" + loadeddibslink + "','','');" + "$('#DoneMessageDiv').hide();" + 11

");</script>"); Dibs.aspx.cs public partial class Dibs : BasePage public String AuthorizationReply get return Request.Params["authorizationReply"]; public String DibsRefNo get return Request.Params["refNr"]; public String OrderNo get return Request.Params["orderNo"]; protected void Page_Load(object sender, EventArgs e) bodytag.attributes.add("onload", "parent.closeprettyphoto('" + DibsRefNo + "', '" + AuthorizationReply + "', '" + OrderNo + "');"); Dibs_httpreport.aspx.cs protected void Page_Load(object sender, EventArgs e) if (reply == "A") //skapa en faktura Biz.Sys.CreateInvoice(order.ID); // sätter isdraft till false order = Biz.GetSysInvoice(order.ID); order.setisdraft(false); Biz.SaveSysInvoice(order); Biz.Sys.CreatePayment(order.ID, sum, refno); // Albin - 2011-03-24 ////skapa en payment //SysPayment payment = new SysPayment(null, sum, Biz.DateTimeNow, Biz.DateTimeNow, refno); //newpaymentid = Biz.SaveSysPayment(payment); ////skapa en invoicepayment //SysInvoicePayment invoicepayment = new SysInvoicePayment(order.ID, newpaymentid, null, sum, refno, Biz.DateTimeNow); //Biz.SaveSysInvoicePayment(invoicePayment); 12