Implementarea Unei Aplicatii Web Pentru Gestionarea Punctelor de Loialitate Oferite de Diferiti Furnizori cu Ajutorul Cardului Bancar de Credit sau Debit
Introducere
Lucrarea de fată prezintă pe parcursul a patru capitole implementarea unei aplicați web pentru gestionarea punctelor de loialitate oferite de diferiți furnizori cu ajutorul cardului bancar de credit sau debit. Aplicația are la baza o necesitate practica, dorința de a unifica toate cardurile de fidelitate intru-un singur card. Cardul de fidelitate în varianta clasica este emis de furnizorul de bunuri sau servicii , pentru fiecare client al sau. Fiecărui client ii este asociat un id unic care de obicei este un cod de bare tipărit pe cardul de fidelitate utilizat pentru autentificare. La fiecare tranzacție a clientului , furnizorul acorda pe baza id-ului de pe cardul de fidelitate un număr de puncte sau diferite reduceri. Acest card de fidelitate are rolul de a identifica clientul în relația sa cu furnizorul. Aplicația dezvoltata în acesta lucrare vine ca o soluție pentru înlocuirea acestui card de fidelitate cu cardul bancar personal al clientului. Cardul bancar are implementat numărul cardului ca identificator unic care va fi folosit ca și cheie unica de identificare în relație cu furnizorul. Astfel id-ul cardului de fidelitate emis de furnizor este înlocuit cu numărul cardului emis de către banca clientului fără a se genera costuri suplimentare atât din partea furnizorului cat și din partea clientului. Astfel autentificarea cu cardul bancar rezolva problema detonării unui număr mare de carduri de fidelitate emise de fiecare furnizor. Pentru a evita frauda bancara aplicația nu salvează în baza de date datele cardului , pe baza numărului de card aplicația generează un token care este unic pe baza căruia se va realiza identificarea clientului, calculul și salvarea punctelor de loialitate în baza de date. Aplicația este structurata în 3 parți , o parte de shop care se va folosi de către furnizorul de bunuri și servicii pentru a culege datele clientului și a sumei tranzacționate care primește tokenul și calculează, salvează datele , o parte de gateway care face doar legătura intre aplicații și o parte care realizează generarea tokenului în funcție de numărul cardului. Pe parcursul lucrării se vor studia: importanta fidelizarii , informați despre cardul bancar, alegerea tehnologiei folosite pentru realizarea aplicației precum și implementarea soluției și execuția aplicației.
Fig.1 Carduri de fidelitate [7]
Sursa:http://www.adicenter.eu/digital-print/card-de-fidelitate-personalizat-card-de-fidelitate-imprimat/
Capitolul 1. Programul de loialitate
Un program de loialitate este un program de recompense oferit de o companie pentru clienții care fac în mod frecvent achiziții. Un program de loialitate poate oferii clientului o forma de acces avansat la produse noi, cupoane speciale de vânzare sau mărfuri gratuite. Clienții de obicei sunt înregistrați pe baza unor informații personale iar societatea le acordă un identificator unic, cum ar fi un act de identitate sau cardul de membru numeric, pentru a folosi acel identificator atunci când se face o achiziție.
Programele de loialitate oferă două funcții cheie: acestea dau o clienților recompense pentru loialitatea lor fată de brand și oferă companiei emitente o mulțime de informații despre consumatorii. în timp ce companiile pot evalua achizițiile anonime, utilizarea unui program de loialitate oferă informații suplimentare cu privire la tipul de produse care pot fi achiziționate împreună și dacă anumite cupoane sunt mai eficiente decât altele.
Programele de loialitate sunt strategii de marketing concepute pentru a încuraja clienții să continue să cumpere în continuare de la același magazin sau de a folosi anumite facilitați asociate fiecărui program. Mulți se folosesc de astfel de programe ca să acopere cele mai multe tipuri de afaceri, fiecare dintre ele având caracteristici diferite fiind recompensate prin scheme .
Cardul de fidelitate
În general în marketing și mai precis în comerțul cu amănuntul, un card de fidelitate, cardul de recompense, cardul de avantaj sau club cardul este un card de plastic sau de hârtie, vizual similar cu un card de credit, card de debit sau un card digital care identifică titularul cardului în calitate de membru într-un program de loialitate. Cardurile de fidelitate se referă la modelul afaceri de loialitate. Un astfel de card este numit de obicei "card de loialitate", în Romania, "card de recompense" sau o "card de puncte", iar în Statele Unite ale Americii, fie "card de discount", "club card" sau "card de recompense".
Carduri au de obicei un cod de bare sau bandă magnetică care poate fi ușor scanată , unele sunt carduri sunt cu cip sau carduri contactless sau mici keyring carduri ( cunoscute de asemenea sub numele de keytags) , care servesc drept breloc la cheie sunt adesea folosite pentru comoditatea și ușurința accesului.
Prin prezentarea unui astfel de card, cumpărătorii obțin, în general dreptul, fie la o reducere la achiziționarea curentă, sau la o alocare de puncte pe care le pot folosi pentru achiziții viitoare. De aceea cardul este metoda de implementare a unui tip operații pe care economiștii îl numesc tarifare din două părți .
Formularele de cerere pentru cardurile de fidelitate de obicei implică acordul de nedivulgare dat de către magazin cu privire la intimitatea clienților și de nu furniza în exterior date agregate despre clienți. Magazinul utilizează datele agregate intern, ca parte a cercetării de marketing . De-a lungul timpului datele pot dezvălui, de exemplu, brand preferat de cafea unui anumit client, sau dacă el sau ea este un vegetarian. În cazul în care un client a furnizat suficiente informații de identificare, cardul de fidelitate poate fi de asemenea folosite pentru a accesa aceste informații pentru a accelera verificarea în timpul primirii controalelor sau distribuirea de prescripție medicală preparate, sau pentru alte privilegii de membru.
Se poate considera ca programele de fidelitate sunt o formă de monedă virtuală , una cu un flux de numerar unidirecțional, din moment ce puncte de recompensă pot fi schimbate într-un bun sau un serviciu , dar nu înapoi în numerar.
Din punct de vedere al clienților loialitatea se clasifica in: [1]:
-loializarea tranzacțională comportamentul de cumpărare al cumpărătorului este clasificat din perspectiva schimbării acestuia
– loializarea perceptuala se pune un accent în special pe opinia și atitudinea clienților
– a treia categorie este o combinație intre loializarea perceptuala și loializarea tranzacționala.
Putem sa spunem ca loializarea clienților creste vânzarea și se rezuma la reducerea cheltuielilor deci automat creșterea profitului într-o societate. Pentru ca o societate sa își mărească volumul vânzărilor este foarte împovărat sa pună accent și pe lotizarea acestora este cu mult mai ușor sa te adresezi unui client deja loializat decât acapararea din piața a clienților noi.
Fidelizarea clienților
Ce este fidelizarea clienților
Fidelizarea clienților se rezuma în mare măsura în satisfacerea nevoilor acestora. Calitatea produselor și a serviciilor oferite precum și comunicarea și politicile de marketing corecte sunt factori principali de loializare. Totalitatea masurilor luate de o societate trebuie sa urmărească fidelizarea clienților actualii precum și a clienților potențiali pentru a o stabilitate și o dezvoltare cat mai buna a relațiilor cu aceștia. Prin fidelizare se înțelege , analiza, planificarea , controlul sistematic , realizarea tuturor masurilor luate spre beneficiarii actuali ai ofertantului, în scopul principal al menținerii acestora precum și dezvoltării a relațiilor. în principal daca prima cumpărare a clintului a fost satisfăcătoare pentru el atunci putem spune ca clientul al început procesul de a fi fidelizat . Este forte important de menționat ca nu doar prima tranzacție a clientului sau cea de a doua cumpărare este importanta pentru ofertat ci fiecare cumpărare este importanta pentru ca clientul sa fie și sa rămână mereu mulțumit. Un client deja fidelizat atrage la rândul sau alți potențiali clienți spre fidelizare. Daca un client este pus în situația de a achiziționa un produs identic de la concurenta el analizează toate avantajele oferite de ofertantul de la care a mai cumpărat diferite produse, ofertant căruia ii este deja loial, de obicei el va cumpăra produsul de la acesta . Un factor decisiv în alegere produsului de care client este siguranța pe care furnizorul o oferă . Daca un alt furnizor ii oferă același produs clientului în funcție de calitatea produselor, modul de tratare și de alte beneficii prima opțiune este de a alge de la cel de care a fost mulțumit . Profitul unei firme , influenta vânzărilor este puternic influențata de fidelizare clienților.
Instrumentele fidelizării
Instrumentele de fidelizarea sunt[2]:
politica de comunicare: mail direct, reviste, carduri de fidelitate, clasic marketing, online marketing, marketing- events.
b) politica de preț: discount-ul, bonusul, diferite stimulente financiare precum și strategii de stabilire a preturilor. Discount-ul și bonusurile sunt acordate de multe ori clienților prin îndeplinirea unor condiții cu scopul de a împiedica o posibila migrare a clienților.
c) produsele sau calitatea serviciilor oferite:
d) distribuția:
Exemple de companii care folosesc programul de loialitate
1. Compania Facebook oferă clienților o rețea de socializare online în mod gratuit. Aceasta permite fiecărui utilizator sa își creeze un cont personal gratuit iar daca utilizatorul dorește la un moment dat ștergerea acestui cont, compania Facebook ii pune la dispoziție o opțiune de dezactivare a acestui cont. Acesta nu implica ștergerea contului ci doar o temporara dezactivare pana când utilizatorul dorește din nou activarea. Toate datele acestuia sunt păstrate fără nici o modificare pana la o noua autentificare a acestuia.
2. Compania Germanos oferă clienților săi în plus fata de concurentă o perioada prelungita a garanției produselor vândute.
3. Banca Raiffeisen oferă un nou tip de creditare clienților fideli și anume credite pre aprobate, astfel clintul beneficiază de sume suplimentare fără a fi modificata rata lunara.
4. Companiile de telefonia mobila oferă clienților puncte de fidelitate care sunt oferite în funcție de valoarea facturilor plătite care pot fi folosite pentru cumpărarea unor telefoane noi la preturi mai mici sau chiar la achitarea facturilor.
5. Grupul hotelier Intercontinental, oferă tuturor oaspeților din cadrul lanțului hotelier un programul de fidelitate numit Priority Rewards Club, care este votat în ultimii trei ani ca cel mai bun program din lume care acorda astfel de facilitații. Oaspeții pot câștiga puncte la cazarea în oricare dintre de hotelurile din portofoliul Intercontinental din lume, punctele pe care le acumulează nu vor expira niciodată, iar oaspeților le este garantată cazarea, indiferent de cat de ocupat este hotelul.
Capitolul 2. Cardul bancar
2.1 Istoricul cardului
In ultimul deceniu în economiile de piața dezvoltate plățile efectuate fără numerar tind sa înlocuiască varianta clasica de plata prin numerar. Dezvoltarea tehnologiei a permis creșterea fiduciarității în diferite forme de comerț cu bunuri și servicii. Odată cu creșterea performanței în deconectarea și transferul banilor, noi instrumente se dezvolta în economia fiduciară. Cu mai bine de 40 de ani în urma specialiști din domeniul bancar nu își puteau imagina impactul pe care inventarea cardului bancar o sa il aibă în domeniul financiar asupra economiei și chiar a vieți sociale. Cardul bancar a ajuns sa devina cel mai profitabil și cel mai utilizat produs financiar oferit de către bănci clienților. John C. Biggins , în anul 1946, stabilește primele premise în favoarea apariției cardului bancar. Principiul de baza de la care a pecat dezvoltarea acestei idei era desul de simplu, comercianți depuneau la banca în urma vânzărilor efectuate bonuri valorice care se depozitau intr-un cont bancar. în schimbul bonurilor valorice comercianți puteau solicita retragere din cont a banilor lichizii. Astfel a luat naștere un nou tip de creditare pe baza bonurilor valorice, de aici și pana la aparitie primului card modern nu mai rămas de făcut decât un pas. Acesta este făcut în anul 1951 ,de banca Franklin National din orașul New York. Aproximativ în aceeași perioadă, Dinners Club introducea pe piața, primul card pentru consum și călătorii Travel&Entertainment Card. Acest nou card a ajuns atât de popular încât băncile au observat aceasta oportunitate de a lua în considerare aceasta formă de a acorda credite clienților pe baza unui card de plastic care funcționează asemănător cu acordarea de bonurile valorice.
Creditarea bazata pe carduri de credit s-a materializat propriu-zis abia în anul 1960, când Bank of America a lansat pe piața un card cu denumirea de BankAmericard, acest card în zilele noastre este transformat în VISA International card. S-a mizat încă de la lansarea acestui card pe o rata de acceptare ridicata în rândul clienților dar ceea ce s-a anticipat a fost ca va revoluționa doar la câțiva ani de la lansare sa modul de achiziție de bunuri și servicii. în doar 10 ani de zile de la lansarea de către Bank of America a cardului acesta ajunge sa utilizat de peste 20 de milioane de clienți în întreaga lume. în urma acestui succes un grup format din 17 bancheri se decid sa pună bazele unei rețea proprii de acceptare reciproca a credit cardurilor locale. Astfel în anul 1966 pe bazele acestei rețele ia naștere Asociația Interbancara de carduri, care are ca principala activitate implementarea procedurilor de clearing, autorizarea tranzacțiilor și decontarea acestora[3].
Iar în anul 1979, după dezvoltarea intonaționala a organizației își schimbă denumirea în Master Card. în anul 1990 în urma dezvoltări foarte rapida a organizației BankAmericard astăzi VISA International aveau emise peste 90 milioane de carduri VISA în întreaga lume.
Se poate spune ca astăzi în detrimentul reticentelor unor utilizatori privind posibilitatea de frauda ,pierderea cardului ca acest instrument a devenit pentru consumatorul de baza , pentru omul de afaceri , pentru turiștii cea mai practica modalitate de plata.
Definirea cardului
Prin regulamentul nr. 6 din 11.oct.2006[8] emis de care Banca Naționala a României cardul se definește ca un instrument electronică de plată, respectiv un suport standardizat de informație, individualizat și securizat, care oferă deținătorului posibilitatea să folosească disponibilitățile bănești proprii, dintr-un cont bancar deschis pe numele său de catre emitentul cardului sau să poată să utilizeze o linie de credit, deschisă în prealabil, de emitent în limita unui plafon prestabilit în favoarea deținătorului cardului, pentru efectuarea unora dintre următoarele operațiuni:
– retragerea ori depunerea de numerar de la terminale ATM, de la ghișeele emitentului sau a unei instituției similare acceptante
– plata achizițiilor de bunurilor sau prestate de servicii de comercianți acceptanți sau emitenți, precum și plata către autoritățile administrației publice de obligații, reprezentând, taxe, impozite, amenzi etc., prin intermediul mediilor electronice;
– transferul de fonduri.
Cardul reprezintă un suport standardizat, individualizat și securizat de informație care oferă deținătorului său accesul la dreptul de a-l putea fi folosit pentru plată.
Cardul se definește ca un instrument de decontare a plații care asigură deținătorului achiziția de bunuri sau prestări de servicii fără a fi necesara prezenta efectivă a numerarului. Cardul este o cheie de acces în cadrul unui cont bancar care facilitează legătura financiară intrinsecă intre consumatori și comercianți. Din anul 1992, cardurile au început progresiv sa fie dotate cu microprocesoare încorporate. Cardurile prezinta un avantaj și aduc un beneficiu în plus celor care le folosesc. Pe lângă funcțiile principale retragere și de plată disponibile în orice tara din lume, cardurile creează în plus condiții mai deosebite deplasărilor în străinătate. Astfel, printre beneficele cardului se numără o serie de servicii de asistenta medicală (atât pentru posesor cat și pentru membrii de familie), garanții auto, reduceri la hoteliere, reduceri la restaurante precum și rezervări de locuri în diferite locații, reduceri la pachetele de vacanta, precum și transmiterea de mesaje sau pachete de asigurări medicale. Cardul este în prezent un instrument universal de plată cu acceptare globala.
2.3 Descrierea principalelor caracteristici ale carduri lor bancare[9]
Cardul bancar este un instrument de acces la unul sau mai multe conturi bancare, care permite deținătorului efectuarea de plăti posibilitatea de retrageri de numerar prin debitarea conturilor respective.
Principalele date de identificare prezente pe card:
pe fata cardului:
numele titularului sau al deținătorului autorizat;
numărul de card format din 16 cifre;
data expirării (in format luna-an (LL/AA), cardul fiind valid pana în ultima zi calendaristica a lunii trecute);
sigla băncii care a emis cardul și unde este deschis contul curent accesat prin intermediul cardului;
organizația internaționala de carduri sub a cărei sigla a fost emis cardul (Visa sau Master Card).
pe spatele cardului:
panelul cu semnătura deținătorului de card sau cea a utilizatorului autorizat (cardul va fi semnat în momentul predării de către unitatea teritoriala clientului);
cod de securitate (ultimele trei cifre ale numărului de șapte cifre și care este utilizat în cazul tranzacțiilor efectuate în mediu virtual).
Cardul bancar poate fi utilizat pentru:
plăți la comercianții acceptatori – achiziționare de bunuri /servicii la comercianții care afișează sigla organizației de carduri:
in mediu electronic – EFT/POS – autorizare pe baza de semnătura si/sau cod PIN;
in mediu manual – Imprinter (Zip-Zap) – numai pe baza de semnătura;
in mediu virtual (Internet/Telefon/Fax) – autoriza rea pe baza de semnătura, niciodată nu este utilizat codul PIN.
retrageri de numerar:
de la ATM-uri (bancomate) care afișează sigla organizației de carduri – întotdeauna pe baza de cod PIN;
de la ghișeele bancare care afișează sigla organizației de carduri – întotdeauna pe baza de cod PIN și semnătura.
2.4 Procesul unei tranzacții cu cardul
Fig.2 Autorizarea plăti cu cardul
Atunci când un client plasează o comanda de produs de la un comerciant se activează un Gateway de plata care efectuează u serie de tranzacții pentru procesarea aceștia după cum urmează:
Titularul cardului plasează comanda pe site prin apăsarea butonului trimite sau poate introduce datele cardului cu ajutorul unui serviciu automat
În cazul în care comanda este plasata prin intermediul unui site web, browser -ul web al clientului criptează informațiile care urmează să fie trimise între browser și web server-ul comerciantului. Exista mai multe metode de criptare, printre altele aceasta se poate face prin intermediul SSL de criptare (Secure Socket Layer). Gateway-ul de plată poate permite ca datele tranzacției să fie trimise direct din browser-ul clientului la poarta de acces, ocolind sistemele de plata a comerciantului..
Comerciantul transmite apoi detaliile tranzacției către gateway-ul lor de plată. Aici se folosește o alta conexiune criptată( SSL ) la serverul de plată găzduit de gateway – ul de plată.
Gateway – ul de plată transmite informația de tranzacționare către procesorul de plată utilizat de către banca comerciantului .
Procesorul de plată transmite informația de tranzacționare către asociația cardului ( de exemplu, Visa / MasterCard / American Express).
Banca emitentă primește cererea de autorizare[4] și verificări de credit sau de debit și apoi trimite înapoi un răspuns la procesor (prin același proces ca și cererea de autorizare) cu un cod de răspuns [de exemplu: a aprobat, a negat]. Suplimentar pe lângă comunicarea stării cererii de autorizare, codul de răspuns este utilizat pentru a defini motivul pentru care tranzacția a eșuat (cum ar fi fonduri insuficiente, sau link-ul bancar nu este disponibil). Între timp, emitentul cardului de credit deține o autorizație asociată cu acel comerciant și consumator pentru suma aprobată. Acest lucru poate avea un influenta capacitatea de plata a consumatorului (de exemplu: d se reduce linia de credit disponibila sau o reținere de fondurilor într-un cont de debit).
Procesorul transmite răspunsul de autorizare la gateway-ul de plată
Gateway-ul de plată primește răspunsul, și transmite-l pe site-ul (sau orice interfață a fost utilizată pentru a procesa plata) în cazul în care aceasta este interpretată ca un răspuns relevant, este transmis înapoi la comerciant și la posesorul de card. Acest lucru este cunoscut sub numele de autorizație sau de "auth"
Întregul proces durează de obicei , de 2-3 secunde.
Comerciantul înregistrează comanda și procesul de mai sus poate fi repetat, dar de data aceasta pentru a elibera ”Clear” autorizarea tranzacției. În mod normal comanda, "clar" este inițiată numai după ce comerciantul a îndeplinit tranzacția (de exemplu: expedierea comenzii). Acest rezultatul este procesat în banca emitentă se validează starea autorizării tranzacției și pregătește tranzacția pentru banca comerciantului.
Comerciantul transmite toate tranzacțiile autorizate aprobate, într – un "batch" ( de exemplu: pana la sfârșitul zilei), la lor banca acceptatoare pentru procesarea plaților. Banca achizitoare face cererea de decontare a tranzacțiilor totale la banca emitenta de card.
Emitentul cardului de credit efectuează o plată de decontare la banca achizitoare (de ex: în ziua următoare)
Capitolul 3. Tehnologi folosite
3.1 Mediul de dezvoltare Eclipse
Eclipse[10] este un mediu de dezvoltare open source scris preponderent în limbajul Java. Acesta poate fi folosit pentru a dezvolta aplicații Java și, prin intermediul unor plug-in-uri, în alte limbaje, cum ar fi C, C++, COBOL, Python, Perl și PHP. Dezvoltarea de aplicații complexe Java, de obicei conțin mai multe fișiere sursa poate deveni foarte dificila în condițiile utilizării unui editor de text simplu. În aceste condiții programatorul va trebui să aleagă și să instaleze pe lângă platforma J2SE, o aplicație care să îl ajute în dezvoltarea aplicațiilor. O astfel de aplicație se numește de (Integrated Development Environment) IDE.
Un mediu de dezvoltare (engl. integrated development environment) este un set de programe care ajută programatorul în scrierea de alte programe. Un mediu de dezvoltare combină toți pașii necesari creării unui program într-un singur soft, care, de regulă, oferă o interfață cu utilizatorul grafică, prietenoasă. Eclipse este o platforma de dezvoltare de aplicații, gândita să ofere uneltele necesare unui programator pentru a dezvolta noi aplicații software. Mediul Eclipse este folosit în principal pentru dezvoltarea de aplicații Java, dar poate fi folosit se pentru a implementa aplicații și în alte limbaje de programare.
Eclipse conține un nucleu central care cuprinde o mașină virtuală și un set de funcționalități de bază, la care se pot adăuga apoi diverse unelte de dezvoltare sub forma unor plugin-uri.
3.2 Limbajul HTML
HTML[11] este un limbaj de marcare orientat către prezentarea documentelor text pe o singura pagină. Utilizând un software specializat de redare, care se numește agent utilizator HTML[5] acesta furnizează mijloacele prin care conținutul unui document se poate adnota cu diverse tipuri de meta date și indicații de redare. Indicațiile de redare pot varia de la decorațiuni minore ale textului (cum ar fi specificarea faptului că un anumit cuvânt trebuie îngroșat sau că un anumit video trebuie introdus) până la utilizarea unor scripturi mai sofisticate, formulare și harți de imagini. în meta datele se pot include informații despre autorul sau titlul documentului, informații despre structura cum este împărțit documentul în diferite, paragrafe sau segmente în liste, titluri și alte informații cruciale care permit ca inclusiv ca documentul să poată fi legat de alte documente pentru a forma astfel hyperlink-uri.
HTML este intenționat proiectat pentru a scrierea și citirea codului de către oameni utilizând un editor de text simplu. Totuși scrierea și modificarea paginilor în acest fel solicită cunoștințe solide de HTML și este consumatoare de timp. Exista și editoare grafice cum ar fi Macromedia Dreamweaver sau Microsoft FrontPage care permit ca paginile web să fie tratate asemănător cu documentele Word, dar observația că aceste programe generează un cod HTML care este de multe ori de calitate mai slaba . HTML se poate genera direct utilizând tehnologii de codare din partea serverului cum ar fi JSP, PHP sau ASP.
3.3 Limbajul PHP
PHP[12] este un limbaj de programare. Termenul PHP provine din limba engleză și reprezintă un acronim recursiv: Php este un Hypertext Processor. Inițial a fost folosit pentru a produce pagini web dinamice, acum este folosit pe scară largă în dezvoltarea aplicațiilor precum și a paginilor web. Se folosește în principal înglobat în codul HTML, dar odată cu lansarea versiuni 4.3.0 se poate folosi și în mod „linie de comandă” (CLI), astfel permițând crearea de aplicații independente. Este unul din principalele limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare. Este instalat conform statisticilor pe 1 milion de servere web și pe peste 20 de milioane de site-uri web. Este disponibil sub Licența PHP și Free Software Foundation care îl consideră a fi un software liber.
PHP[6] este un limbaj de programare destinat în primul rând Internetului, aducând dinamică unei pagini web. Este unul dintre cele mai importante limbaje de programare web open-source (este gratuit și, în plus, utilizatorii pot acționa liber asupra procesului de dezvoltare) și server-side (codul sursă nu se rulează pe calculatorul celui care vizualizează pagina, ci pe serverul web).
Limbajul a luat naștere în anul 1994 ca și o extensie a limbajului server-side Perl, iar mai apoi ca o serie de CGI-uri compilate, de către Rasmus Lerdorf, pentru a fi folosite în a genera un curriculum vitae și pentru a se urmări numărul de vizitatori al unui site. A evoluat apoi în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski și Andi Gutmans au lansat o nouă versiune a interpretorului PHP în anul 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat numele în acronimul recursiv amintit mai sus, până atunci PHP-ul fiind cunoscut ca „Personal Home Page tools”. În prezent ultima versiune disponibila în mod oficial este veriunea 7 a acestui limbaj.
Prin CGI (Common Gateway Interface) se înțelege o interfață a unui server de web, care extinde funcționalitățile acestuia. CGI nu se referă la un anumit limbaj de programare, ci definește un modul standardizat, prezent în cadrul unui server HTTP. Prin intermediul acestui modul se stabilesc regulile prin care server-ul va pasa datele primite de la un utilizator către o aplicație scrisă într-un anumit limbaj de programare, pentru ca apoi să întoarcă rezultatele acestei aplicații înapoi la utilizator. Limbajul PHP, în marea majoritate a cazurilor, se folosește sub formă de secvențe de cod inserate în cadrul unui document HTML. Din acest motiv, vom prefera termenul de „script PHP” celui de program PHP. Structura unui script PHP este asemănătoare cu structura unui cod scris în limbajul C, mai ales în sensul de sintaxă și funcționalitate. Rolurile de bază ale unui script PHP constau în aceea că scriptul poate prelua date trimise de către o pagină web de la un client (în general, datele pot fi trimise de către o pagină web prin intermediul formularelor) și de a executa o secvență de program în urma căreia va rezulta un cod HTML, cod pe care clientul îl va primi sub forma unei pagini web. XAMPP[13] este un pachet de programe free software, open source și cross-platform web server, care constă în Apache HTTP Server, MySQL database și interpretoare pentru scripturile scrise în limbajele de programare PHP și Perl.
3.4 Serverul baze de date MySQL
MySQL[14] este un sistem de gestiune de baze de date relaționale, este produs de compania MySQL AB și este distribuit sub Licența Publică Generală GNU. Este considerat cel mai popular SGBD open-source disponibil la ora actuală, fiind considerat o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).Deși este folosit de obicei împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major de programare. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum ar fi: C, C++, C#, Java, Perl, PHP, Python,etc., fiecare dintre acestea folosind un tip specific API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele dintre companiile care produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respectivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.LAMP cuprinde și MySQL
Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare, MySQL AB.MySQL este componentă integrată a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea să ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul ca MySQL este mult mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.Pentru a administra bazele de date MySQL[6] se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică: MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.
În ultimii ani, utilizarea bazelor de date pe Internet a luat o amploare deosebită. Există o mulțime de aplicații, extrem de utile, care le utilizează, cum ar fi: aplicații de contorizare, comerț electronic, vot electronic, aplicații de comunicare. În domeniul creării și utilizării bazelor de date relaționale s-a impus necesitatea existenței unui limbaj standard care să permită efectuarea acestor operații. Astfel, a apărut SQL – Structured Query Language. Limbajul a fost supervizat de comisia de standardizare ANSI (American National Standards Institute), motiv pentru care se mai numește și ANSI SQL.SQL nu este un limbaj de firmă, ci el este implementat de o mulțime de SGBD-uri consacrate, cum ar fi Microsoft Access, Oracle, Microsoft SQL Server și, bineînțeles, MySQL. MySQL este un limbaj specializat pentru gestiunea bazelor de date relaționale pe Internet, având la bază limbajul SQL. MySQL gestionează baze de date care se găsesc pe un server. Baza de date poate fi foarte lesne exploatată prin intermediul limbajului PHP, dar și cu alte limbaje (de exemplu Java).
SQLyog este un program, de fapt o interfață grafică foarte atrăgătoare ce ne ajută să lucrăm cât mai ușor posibil cu serverul bazei de date MySQL. SQLyog permite optimizarea bazei de date sau exportarea de date din baza de date în diferite formate CSV, HTML și XML. Cu SQLyog poți administra user-ii și permisiunile ce vei acorda acestora. Cu SQLyog poți face de asemeni cereri multiple de la baza de date sau poți introduce date în baza de date.
3.5 JSON Notația Obiect JavaScript:
JSON[16] (JavaScript Object Notation – Notația Obiect JavaScript) este un format ușor de interschimbare a datelor. Este ușor de citit și scris pentru oameni. Este ușor de parsat și generat de către mașini. Este bazat pe o parte a Limbajului de Programare JavaScript, Standardul ECMA-262 Ediția a III-a – Decembrie 1999. JSON este un format text care este complet independent de limbaj dar folosește convenții care le sunt familiare programatorilor familiei de limbaje C, care include C, C++, C#, Java, JavaScript, Perl, Python, și multe altele. Aceste proprietăți fac din JSON un limbaj ideal pentru interschimbarea datelor. O colecție de perechi nume/valoare. În diverse limbaje aceasta este realizată ca un obiect, o înregistrare, o structură, un dicționar, o tabelă hash, o listă de chei, sau un tablou asociativ. O listă ordonată de valori. În cele mai multe limbaje, aceasta este realizată ca un tablou, un vector, o listă, sau un șir. Acestea sunt structuri de date universale. Aproape toate limbajele de programare moderne le suportă într-o formă sau alta. Are sens ca un format de date care este interschimbabil cu limbajele de programare să fie bazat tot pe aceste structuri.
În JSON, acestea iau una dintre următoarele forme:
Un obiect este o mulțime neordonată de perechi nume/valoare. Un obiect începe cu { (acoladă deschisă) și se termină cu } (acoladă închisă). Fiecare nume este urmat de : (două puncte) și perechile nume/valoare sunt separate de , (virgulă).
3.6 Arhitectura orientate spre servicii
Arhitectura orientate spre servicii este un model de design bazat pe piese distincte de software care oferă funcționalitate aplicație și servicii către alte aplicații prin intermediul unui protocol stabilit. Un serviciu este o unitate de sine stătătoare cu funcționalitate proprie. Serviciile pot fi combinate cu alte aplicații software pentru a oferi funcționalitatea completă a unei aplicații software. Arhitectura orientate spre servicii se bazează pe conceptul de servicii. În funcție de abordarea de design adoptată, fiecare serviciu SOA[15] este proiectat pentru a îndeplini una sau mai multe activități. Ca urmare, fiecare serviciu este construit ca o bucată distincta a produsului software. Acest lucru face posibilă reutilizarea codului în moduri diferite prin schimbarea doar a modului în care un serviciu individual inter operează cu alte servicii care alcătuiesc cererea, față de efectuarea de modificări de cod la nivelul serviciul în sine. Micro serviciile sunt servicii mici, autonome care lucrează împreună, dar care reprezintă entități separate. Orice comunicare între servicii se face prin apeluri în rețea pentru a ajuta la separarea între servicii și pentru a evita pericolul unui cuplaj strâns. Aceste servicii trebuie să fie capabil de a se modifica în mod independent unul de altul. Este important ceea ce serviciile trebuie să expună, precum și ceea ce ar trebui să ascundă. Dacă un serviciu expune prea mult, serviciile consumatoare devin cuplate la reprezentările interne. Aceasta scade autonomia serviciului, deoarece necesită o coordonare suplimentară cu consumatorii atunci când se fac modificări. Beneficiile microservices sunt multe și variate. Multe dintre aceste beneficii pot fi atribuite oricărui sistem distribuit. Micro serviciile, cu toate acestea, au tendința de a realiza aceste beneficii într-o măsură mai mare în primul rând datorită faptului ca preiau conceptele din spatele sistemelor distribuite și a arhitecturi orientate spre servicii.
3.7 Limbajul de programare Java
Java[17] este un limbaj de programare orientat obiect, începutul limbajului Java este toamna anului 1991, atunci când firma Sun Microsystems a finanțează un proiect cu numele Green condus de James Goslin .Scopul echipei Green era sa plaseze firma Sun Microsystems pe piața produselor electronice comerciale. Inginerii și dezvoltatorii de soft de la Sun au căutat microprocesoare care sa ruleze pe o multitudine de mașini, în particular pe sisteme distribuite care să lucreze în timp real. Cheia succesului firmei Sun a fost abilitatea lucrului pe multiple platforme. După patru ani de lucru, echipa Green finalizează specificațiile limbajului Java. Apoi compania Sun Microsystems vinde licența firmelor IBM, Microsoft, Adobe. Este inițial denumita OAK, tehnologia Java este formată dintr-un limbaj de programare de nivel înalt pe baza căruia sunt construite o serie de platforme destinate implementării de aplicații pentru toate segmentele industriei software.
Caracteristicile limbajului Java sunt:
• limbaj independent de platformă. La instalarea limbajului Java, se va crea mașina virtuala Java care are drept scop traducerea instrucțiunilor scrise în byte code în instrucțiuni mașina pentru platforma curenta.
• limbaj interpretat și compilat. Un limbaj este interpretat daca instrucțiunile unui program scris în acel limbaj sunt procesate linie cu linie și traduse în cod mașina. Un limbaj este compilat dacă un program scris în acel limbaj este tradus într-un cod pe care calculatorul îl poate ’’înțelege” (executa) mult mai ușor.
• limbaj orientat obiect. Cea mai importantă proprietate a limbajului
Java este orientarea obiect, aceasta fiind privită ca o trăsătura implicită.
• limbaj concurent. Concurența (din eng. multithreading) înseamnă capacitatea unui program de a executa mai multe secvențe de cod în același timp.
• limbaj simplu. Spre deosebire de C++, care este cel mai popular limbaj orientat obiect, Java elimină câteva dintre trăsăturile acestuia: posibilitatea moștenirii multiple este exclusa, șirurile sunt încapsulate într-o structură clasă.
• limbaj distribuit. Java este distribuit deoarece permite utilizarea obiectelor pentru Internet, capabile să ruleze pe platforme distribuite și eterogene.
• limbaj performant. Interpretorul Java este capabil să execute byte code aproape la fel de repede ca un cod compilat.
• limbaj dinamic și robust. Java întârzie alocarea obiectelor și legarea dinamica a claselor, pentru momentul execuției.
• limbaj sigur. Programele Java nu pot accesa memoria heap, stack sau alte secțiuni protejate de memorie, deoarece Java nu folosește pointeri și alocă memorie doar la execute. înainte ca interpretorul Java sa execute byte codul, se verifica dacă este un cod Java valid prin cercetarea accesului la date, conversiilor de date nepermise, valorilor și parametri incorecți.
Mașina virtuala Java JVM este principala noutatea a limbajului Java fata celelalte limbaje de programare. Partea mai dificila a creării codului binar Java este compilarea codului sursa din cauza ca o mașina JAVA nu exista fizic. Aceasta mașina este numita mașina virtuala Java, deoarece exista doar în memorie. Apoi, interpretorul Java traduce instrucțiuni cod mașina Java în mulțimi de instrucțiuni care pot fi înțelese de mașina reala (fizica).
Capitolul 4. Aplicatia Easy Loyality
Aplicația Easy Loyality are ca scop principal renunțarea la multitudinea de carduri de loialitate a diferiților furnizori de bunuri sau servicii în favoarea gestionarii acestora cu ajutorul cardului bancar personal. Un procesator de plăti poate folosi aceasta aplicație pentru a atrage diferiți furnizori să se înscrie în programul punctelor de loialitate. Astfel se pot acumula puncte de loialitate de la mai mulți furnizori acestea fiind stocate în datele cardului.
4.1 Structura aplicației
Aplicației este alcătuita din 3 aplicații și 3 micro servicii după cum se observa în figura 1 : ScoringLoyality, LoyaltyIndicator și Gateway. Aplicația ScoringLoylity și LoyaltyIndicator calculează punctele de loialitate și criptează datele cardului în timp ce micro serviciul Gateway are rol de a gestiona tranzacțiile.
Fig. 3 Structura aplicației
în aplicația ScoringLoyality gestionam partea de front-end development a aplicației dar și o parte din back-end development prin tehnologia php, java script și realizam conectarea la baza de date easy_loyality de tip Mysql . Aplicația se folosește de framework-ul Bootstrap pentru realizarea site-ului pentru o optimizare mai buna atât grafic cat și din punct de vedere responsive a siteului.
In folderul ScoringLoyality avem următoarele foldere:
Fig. 4 Folderul ScoringLoyality
CSS unde avem fișierele de style a aplicației pentru definirea layout-ului
Fig. 5 CSS
FONTS unde sunt salvate fișierele de tip font „glyphicons-halflings-regular” necesare freamework-ul
Fig. 6 FONTS
JAVASCRIPT unde sunt salvate fișierele de tip Java script a aplicației
Fig. 7 JAVA SCRIPT
PHP aici sunt salvate fișierele de tip PHP a aplicației
Fig. 8 PHP
Fișierul – index.php – e fișierul care afișează conținutul site-ului. în partea de sus a paginilor sunt afișate categoriile, meniurile principale din site. Acest fișier trebuie creat în directorul root al site-ului (www sau httpdocs). în el sunt 2 categorii distincte de cod: scriptul PHP și codul HTML cu layout-ul site-ului.
config.php conține informații de conectare la baza de date și calea de acces la folderele aplicației
Fig. 9 Fișierul index.php și config.php
4.2 Descrierea aplicației
în fișierul index.php se definesc legăturile intre fișierele aplicației:
fișierul de configurare a bazei de date config.php
fișierul de tip javascript jQuery-1.12.1.js și form-data.js
<script src="<?php echo JS_PATH . 'jQuery-1.12.1.js'; ?>"></script>
<script src="<?php echo JS_PATH . 'form-data.js'; ?>"></script>
fisierele de stilizare a html-ului bootstrap.min.css și style.css
<link href="<?php echo CSS_PATH . 'bootstrap.min.css'; ?>" rel="stylesheet"
<link href="<?php echo CSS_PATH . 'style.css'; ?>" rel="stylesheet">
Se definesc câmpurile de introducere a datelor aferente cardului bancar și suma de tranzacționat. Se definește un checkbox care automat este setat cu valoarea false pentru înregistrarea în programul de loialitate la efectuarea tranzacției.
Fig. 10 Date card[18]
Sursa: https://www.bancatransilvania.ro/pentru-tine/carduri/carduri-de-debit/visa-electron/
Se definesc următoarele câmpuri:
Numele de pe card căruia ii este asociat id-ul: card-holder-name. Aceste câmp se completează cu numele și prenumele posesorului cardului
Numărul cardului căruia ii este asociat id-ul: card-number. Acest câmp se completează cu codul cardului de credit
Codul CVV căruia ii este asociat id-ul: card-cvv Acest câmp se completează cu codul de securitate format din 3 cifre care se găsește de obicei în spatele cardului lângă rubrica de semnătura.
Data expirării căruia ii este asociat id-ul: card-expiry. Acest câmp se completează data de expirare a cardului de credit
Se definesc în cadrul capului Data expirării doua liste de tipul drop-down-list :
Luna căruia ii este asociat id-ul: expiry-month în cadrul căreia se definesc valorile predefinite cu lunile anului: Ian(01),Feb(02),Mar(03),Apr(04),Mai(05),Iun(06),
Iul(07),Aug(08),Sep(09),Oct(10),Nov(11),Dec(12)
Anul căruia ii este asociat id-ul: expiry-year în cadrul căreia se definesc valorile predefinite ani:2016,2017,2018,2019,2020,2021,2022,2023
Suma căruia ii este asociat id-ul: card-amount. Acest câmp se completează cu suma care urmează să fie tranzacționata.
Înregistrare în programul punctelor de loialitate căruia ii este asociat id-ul: register-loyality-check. Aceasta bifa are rolul de acceptare a utilizatorului de a se înregistra cu suma tranzacționata în sistemul punctelor de loialitate
Butonul Trimite căruia ii este asociat id-ul: button-send. Prin acționarea acestui buton se transmit datele culese spre procesare.
Text box de răspuns căruia ii este asociat id-ul: response-box. Aceasta caseta are rolul de a afișa rezultatul obținut în urma procesări datelor.
In fișierul javascript form-data.js se definesc funcțiile Java script apelabile la click pe butonul trimite.
$("#button-send").click(function() {
$(".alert").css('display', 'none');
$("#response-box").css('display', 'none');
var cardHolderName = $("#card-holder-name").val();
var cardNumber = $("#card-number").val();
var cardExpiryMonth = $("#card-expiry-month").val();
var cardExpiryYear = $("#card-expiry-year option:selected").text();
var cardCVV = $("#card-cvv").val();
var cardAmount = $("#card-amount").val();
var registerToLoyality = $('#register-loyality-check').is(":checked");
var clientInfo = {
cardHolderName: cardHolderName,
cardNumber: cardNumber,
cardExpiryMonth: cardExpiryMonth,
cardExpiryYear: cardExpiryYear,
cardCVV: cardCVV,
cardAmount: cardAmount,
registerToLoyality: registerToLoyality,
};
Iar mai apoi printr-un obiect de tip json se apelează ScoringLoyality/php/make-payment.php unde cu ajutorul tehnologie php se fac validării asupra datelor introduse și conectarea la bazele de date și legătura cu http://localhost:8182/Gateway/pay.
Se validează următoarele:
Numele cardului să nu fie gol să fie un câmp de tip alfa numeric iar dimensiunea maxima a acestuia să nu depășească 30 de caractere.
$cardHolderName = empty($_POST['cardHolderName']) ? die(error_empty_field('Name on Card')) : $_POST['cardHolderName'];
if (strlen ($cardHolderName) > 20)
die(json_encode(new ErrorMessage('Numele de pe card', 'trebuie sa max 50 charactere')));
preg_match("/[0-9A-Za-z ']{3,50}/", $cardHolderName, $regex_output);
if (empty($regex_output) || $regex_output[0]!=$cardHolderName)
die(json_encode(new ErrorMessage('Numele de pe card', 'Nu este de tipul alfanumeric!')));
function error_empty_field($field) {
$message = 'Acest camp nu poate fi gol.';
return json_encode(new ErrorMessage("Numele de pe card", $message));
}
Numărul cardului să fie format doar din cifre și să aibă dimensiunea de 16 cifre.
preg_match("/[0-9]{16}/", $cardNumber, $regex_output);
if (empty($regex_output) || $regex_output[0]!=$cardNumber)
die(json_encode(new ErrorMessage('Numarul cardului', 'nu este un numar digital format din 16 ')));
Data de expirare a cardului se verifica daca cardul este în perioada de valabilitate
$cardExpiryMonth = empty($_POST['cardExpiryMonth']) ? die(error_empty_field('Expiration Date (month)')) : $_POST['cardExpiryMonth'];
$cardExpiryMonthInt = intval($cardExpiryMonth);
if (!($cardExpiryMonthInt >= 1 && $cardExpiryMonthInt <=12))
die(json_encode(new ErrorMessage('Data de expirare', 'nu este o luna valida')));
$cardExpiryYear = empty($_POST['cardExpiryYear']) ? die(error_empty_field('Expiration Date (year)')) : $_POST['cardExpiryYear'];
$cardExpiryYearInt = intval($cardExpiryYear);
if (!($cardExpiryYearInt >= 2016 && $cardExpiryYearInt <=2023))
die(json_encode(new ErrorMessage('Data de expirare', 'nu este un an valid')));
$cardExpiryDate=mktime(0, 0, 0, $cardExpiryMonthInt+1, 1, $cardExpiryYearInt);
if ( time() >= $cardExpiryDate)
die(json_encode(new ErrorMessage('Cardul', 'este expirat')));
Numărul de securitate a cardului să fie format doar din cifre și să aibă dimensiunea de 3 cifre.
$cardCVV = empty($_POST['cardCVV']) ? die(error_empty_field('Card CVV')) : $_POST['cardCVV'];
preg_match("/[0-9']{3}/", $cardCVV, $regex_output);
if (empty($regex_output) || $regex_output[0]!=$cardCVV)
die(json_encode(new ErrorMessage('Codul CVV', 'nu este un numar din 3 cifre ')));
Suma de tranzacționat se verifica ca suma de tranzacționat să fie de tip float mai mare ca 0
$cardAmount = empty($_POST['cardAmount']) ? die(error_empty_field('Card Amount')) : $_POST['cardAmount'];
$cardAmountFloat = intval($cardAmount);
if (!($cardAmountFloat >= 1))
die(json_encode(new ErrorMessage('Atentie suma nu este un numar real.')));
Se verifica daca se dorește înregistrarea în programul de loialitate
$registerToLoyality = empty($_POST['registerToLoyality']) ? false : $_POST['registerToLoyality'];
Daca datele sunt valide se accesează gateway-ul pentru primirea datelor.
function request($cardHolderName, $cardNumber, $cardExpiryMonth, $cardExpiryYear, $cardCVV, $registerToLoyality, $amount) {
$url = "http://localhost:8182/Gateway/pay";
$data = "cardHolderName=".$cardHolderName.
"&cardNumber=".$cardNumber.
"&cardExpiryMonth=".$cardExpiryMonth.
"&cardExpiryYear=".$cardExpiryYear.
"&cardCVV=".$cardCVV.
"®isterToLoyality=".$registerToLoyality.
"&amount=".$amount;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/*$responseData = curl_exec($ch);
if(curl_errno($ch)) {
return array(
"resultMessage" => 'Failed to fetch data.',
"resultCode" => '01'
);
Se generează tokenul pentru securizarea datelor.
public $resultCode;
public $token;
public function __construct($token) {
$this->resultCode = '00';
$this->token = $token;
$responseData = request($cardHolderName, $cardNumber, $cardExpiryMonth, $cardExpiryYear, $cardCVV, $registerToLoyality, $cardAmountFloat);
$responseData = json_decode($responseData, true);
$client_points = "";
$token = '';
$response_to_client = array('type' => 'error');
switch ($responseData['resultCode']) {
case "00":
// Success
if (!empty($responseData['token'])) {
$token = $responseData['token'];
calculate_points($token);
$client_points = get_client_points($token);
$response_to_client = array('type' => 'success', 'client_points' => $client_points);
}
else {
$response_to_client = array('type' => 'success');
}
break;
default:
}
echo json_encode($response_to_client);
Se calculează punctele și se inserează în baza de date. Pentru fiacre tranzacție pe care o efectuează clientul se adaugă un punct în baza de date, punctele se cumulează la fiecare tranzacție indiferent de furnizor. Se returnează numărul de puncte cumulate la finalizarea tranzacției.
function calculate_points($token) {
global $db_connection;
$insert_score_query = "INSERT INTO scores(user_token, loyality_points)
VALUES('$token', '1')
ON DUPLICATE KEY UPDATE loyality_points = loyality_points + 1";
$db_connection->query_db($insert_score_query);
}
function get_client_points($token) {
global $db_connection;
$client_points = 0;
$get_points_query = "SELECT loyality_points
FROM scores
WHERE user_token='$token'";
$result = $db_connection->query_db($get_points_query);
$returned_rows = $db_connection->get_returned_rows();
if ($returned_rows > 0) {
$row = $result->fetch_array(MYSQLI_ASSOC);
$client_points = $row['loyality_points'];
}
return $client_points;
}
4.2 Baza de date
Baza de date a aplicației este de tip mysql în fișierul config.php este definit serverul bazei de date, userul de conectare la baza de date, parola de conectare portul și denumirea bazei de date.
$servername = 'localhost';
$username = 'root';
$password = '';
$port = '3306';
$db_name = 'easy_loyality';
Fig.11 Baza de date Easy Loyality
In fișierul database.php se definește conectarea la baza de date
$db_connection = new DatabaseConnect($servername, $username, $password, $db_name);
class DatabaseConnect {
private $conn;
private $result;
public function __construct($servername, $username, $password, $database) {
$this->conn = new mysqli($servername, $username, $password, $database);
if ($this->conn->connect_error) {
die("Connection to database failed! " . $this->conn->connect_error);
}
}
public function query_db($query) {
$this->result = mysqli_query($this->conn, $query)
or die("There was something wrong with the query syntax.");
return $this->result;
}
public function get_returned_rows() {
return mysqli_num_rows($this->result);
}
public function close_connection() {
$this->conn->close();
}
Tabela din baza de date scores are următoarea structura:
user_token reprezintă terenul generat în urma codificări numărului de card, este de tip vârâră și accepta o lungime de 300.Este o cheie primara și nu se accepta valoarea null
loyality_points reprezintă punctele de loialitate cumulate în urma tranzacțiilor , este de tip int cu lungimea maxima de 11 , este setat default cu valoarea 0.
Fig.12 Structura baza de date Scores
4.3 Execuția aplicației
Fig. 13 Execuția programului
Aplicația rulează pe un server local localhost comunica prin portul 8081 , se accesează linkul http://localhost:8181/EasyLoyality/index.php din locația c:/xampp/htdocs/EasyLoyality. Se vor completa câmpurile obligatorii marcate cu *:
Nume de pe card se va completa cu numele și prenumele posesorului de card așa cum apare pe cardul de credit. Câmpul dispune de un placeholder precomplectat cu datele cerute
Numărul cardului se va completa cu codul cardului de credit
Codul CVV se va completa cu codul de securitate format din 3 cifre care se găsește de obicei în spatele cardului lângă rubrica de semnătura.
Data expirării se va completa cu opțiunile din lista care vor reprezenta data de expirare a cardului de credit.
Suma se va completa cu suma care urmează să fie tranzacționata.
Înregistrare în programul punctelor de loialitate aceasta bifa are rolul de acceptare a utilizatorului de a se înregistra cu suma tranzacționata în sistemul punctelor de loialitate
Butonul Trimite prin acționarea acestui buton se transmit datele culese spre procesare.
In continuare după completarea datelor cerute se vor face validări asupra fiecărui câmp pentru date introdusese vor verifica următoarele:
Fig. 14 Validare Număr card
Numele cardului să nu fie gol să fie un câmp de tip alfa numeric iar dimensiunea maxima a acestuia să nu depășească 30 de caractere.
Numărul cardului să fie format doar din cifre și să aibă dimensiunea de 16 cifre.
Data de expirare a cardului se verifica daca cardul este în perioada de valabilitate.
Numărul de securitate a cardului să fie format doar din cifre și să aibă dimensiunea de 3 cifre.
Suma de tranzacționat se verifica ca suma de tranzacționat să fie mai mare ca 0
Se verifica daca se dorește înregistrarea în programul de loialitate
Daca toate datele sunt validate și este bifata opțiunea de înregistrare în programul de fidelitate datele sunt transmite prin Gateway la aplicația LoyaltyIndicator care va face criptarea numărului de card și generarea tokenului. După generarea terenului acesta se întoarce tot prin intermediul Gateway-lui la aplicația ScoringLoyality care va salva tokenul în baza de date Scores și va adăuga în baza de date pentru fiecare tranzacție generata un punct de loialitate în plus.
Fig.15 Tranzacție cu succes
Daca tranzacția este efectuata fără erorii aplicația va afișa un mesaj : „Tranzacția a fost efectuata cu succes!” și totodată va afișa puncte de loialitate acumulate după efectuarea tranzacției.
Concluzii
Aplicația prezentata oferă o alternative fără costuri pentru eliminarea cardului de fidelitate, acesta fiind înlocuit de cardul bancar. Prin implementarea aplicație furnizorul de bunuri și servicii poate economisi o pare importanta din bugetul companiei prin renunțarea la costurile generate de emiterea cardului de fidelitate. Totodată prin implementarea acestei aplicații clientul are avantajul de nu a fi nevoit să aibă la el o multitudine de carduri de fidelitate de la diferiții furnizori. Aplicației oferă clientului posibilitatea de a beneficia de fidelizarea pentru fiecare tranzacție efectuata cu cardul bancar fără a fi pus în situația de a nu beneficia e acest program daca nu are asupra să cardul de fidelitate emis de furnizorul respectiv. Aceasta aplicație se poate dezvolta mai departe în scopul extinderii folosirii punctelor de fidelitate de la un furnizor la altul daca se dorește și se opțiune acordul acestora. Clientul are avantajul de a putea folosi punctele de fidelitate acumulate de la un furnizor pentru a beneficia de reduceri sau alte beneficii acordate de alt furnizor partener.
Aplicației poate fi dezvoltata prin implementarea unui nou modul prin care să se proceseze date pentru anumite produse sau servicii achiziționate de către client astfel să se poată realiza o statistica sau să se genereze diferite rapoarte în funcție de preferințele furnizorului.
Fiind o aplicație web nu este limitata de anumite sisteme de operare sau de cerințe speciale a sistemului astfel aplicația este mulți device și rulează pe orice sistem de operare.
Bibliografie:
1. Michael E.Cafferky – Lasă clienții sa iți promoveze afacerea; Editura Bucuresti 2007
2. Ted Johnd- Relațiile perfecte cu clienții; Editura National,1998
3. C. Dardac, Basno . – Operațiuni bancare. Instrumente si tehnici de plată; București, Editura Didactică și Pedagogică, 1996
4 .Lițoiu,V.,Mehedințu,A., Bădică, A. – Sisteme informatice financiar bancare; Craiova, 1999
5. Tudor Sorin și Vlad Huțanu – Crearea și programarea paginilor WEB;București, L&S Infomat, 2004
6. Larry Ulman, PHP și MySQL pentru site-uri web dinamice; București, Teora, 2006;
7. Carduri de fidelitate – fig.1; http://www.adicenter.eu/digital-print/card-de-fidelitate-personalizat-card-de-fidelitate-imprimat/
8. Regulament BNR – http://www.bnr.ro/apage.aspx?pid=404&actId=20
9. Descriere card OTP Bank – https://www.otpbank.ro/assets/pdf/descriere-card.pdf
10. Eclipse – http://control.aut.utcluj.ro/hmihai/doku.php?id=java1:descrieremedii_isp
11. Limbajul HTML- https://ro.wikipedia.org/wiki/HyperText_Markup_Language
12. Limbajul PHP – .https://ro.wikipedia.org/wiki/PHP
13. XAMPP – https://ro.wikipedia.org/wiki/XAMPP
14. Baze de date MySQL – https://ro.wikipedia.org/wiki/MySQL
15. SOA – http://stst.elia.pub.ro/news/IS/TEME_IS_2014_15/3_StoicanIo_SOA_microservicii.doc
16. JSON http://www.json.org/json-ro.html
17. Limbajul Java – https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
18. Card de credit fig.10 – https://www.bancatransilvania.ro/pentru-tine/carduri/carduri-de-debit/visa-electron/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Implementarea Unei Aplicatii Web Pentru Gestionarea Punctelor de Loialitate Oferite de Diferiti Furnizori cu Ajutorul Cardului Bancar de Credit sau Debit (ID: 116334)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
