M-banking: Analyse, conception et implémentation d'une solution de SMS-Banking( Télécharger le fichier original )par Firmin Evrard DOUANLA TOUOPI Institut d'ingénierie informatique de Limoges - Master 2009 |
Implémentation d'un portail SMS à base du logiciel KANNEL www.memoireonline.com/.../m_Implementation-dun-portail-SMS--base-du-logiciel-KANNEL3.htm
§ Didier DONSEZ, rangiroa.essi.fr/cours/internet/04-01-slides-wap-wml.pdf ,WAP Wireless Application Protocol WML Wireless Markup Language. § Andreas Fink -Bruno Rodrigues, Kannel 1.3.2 User's Guide Open Source WAP and SMS gateway § Tarun Dua, Kannel as an SMS Gateway § Dr. Nizar Zarka CONTROL & DATA TRANSFER VIA SMS. medforist.ensias.ma/Contenus/.../papers/June25/20.pdf § http://www.math.sunysb.edu/~comech/tools/PCImodems.html § User Manual Falcom SWING GSM-Modem www.topitech.com/file/Swing/Falcom_SWING_eng.pdf http://www.mtn.cm/LoadedPortal [Pascal roques1] Pascal Roques, UML 2 par la pratique, ISBN :978-2-212-12322-7, 6ème édition, Eyrolles, Paris, 2002. [Pascal roques2] Pascal Roques, Les Cahiers du Programmeur UML, Eyrolles, Paris, 2002. [Banque], <Banque>,http://fr.wikipedia.org/wiki/Banque, 11 mai 2009 SMS gateway http://en.wikipedia.org/wiki/SMS_gateway SIM Application Toolkithttp://en.wikipedia.org/wiki/SIM_Application_Toolkit What is SIM Toolkit? http://www.cellular.co.za/sim_toolkit.htmWAP - Le protocole http://www.commentcamarche.net/contents/wap/wapintro.php3 September 2005 sachin-shetty SMS Banking by Sachin Shetty,http://palisade.plynt.com/issues/2005Sep/sms-banking/ Walter Carels ICT Manager Electronic Banking Mobile banking (SMS and WAP) via My KBC Le réseau GSM a fêté ses 20 ans ! Posté le 10 septembre 2007 à 17:48:56 CEST par Pascal Thevenier http://www.tt-hardware.com/modules.php?name=News&file=article&sid=10807 About Mobile Banking via WAP http://kannel.org/download/1.3.2/userguide-1.3.2/userguide.html Un marché en pleine expansion... Marketing Direct N°69 - 01/11/2002 - Peggy Cardin Description du WAP http://www.lirmm.fr/~ajm/Cours/01-02/DESS_TNI/TER9/WAP/description/description.htm http://info.bpiexpressonline.com/bpiprod/prodserv.nsf/Mobile+Banking/MobileBankingWAP?OpenDocument Cédrick Fairon, Jean René Klein et Sébastien Paumier, Le langage SMS. Étude d'un corpus informatisé à partir de l'enquête 'Faites don de vos SMS à la science' , Presses universitaires de Louvain, Louvain-la-Neuve. Cahiers du Cental, 3.1, 2006. Le standard GSM http://www.commentcamarche.net/contents/telephonie-mobile/gsm.php3 Short message service http://fr.wikipedia.org/wiki/Short_message_service SIM Toolkit http://bladox.com/devel-docs/gen_stk.html http://jaaayyy.chez.com/html/Radiomobiles/stage/Carte SIM et SIM Application Toolkit (SAT).htm Annexe 1 : Modèle conceptuel de données de SMS-BANKING Annexe 2 : Modèle logique de données de SMS-BANKING group = core admin-port = 13000 admin-password = root status-password = kokodi #admin-deny-ip = "*.*.*.*" admin-allow-ip = "127.0.0.1;192.168.100.*" smsbox-port = 13003 box-allow-ip = "127.0.0.1;192.168.1.*" log-file = "/tmp/kannel.log" log-level = 1 access-log = "/tmp/access.log" store-file = "/tmp/kannel1.log" sms-incoming-queue-limit=-1 access-log-format="%t [from=%p] [to=%P] [msg=%b]" unified-prefix = "+237,00237,0;+,00" include = "/etc/kannel/modems.conf" group = smsc smsc-id = modem smsc = at modemtype = auto device = /dev/modem log-file = "/tmp/smsc.log" speed = 9600 validityperiod = 167 group = smsbox bearerbox-host = 192.168.100.116 sendsms-port = 10000 sendsms-chars = "0123456789" global-sender = 75296068 log-file = "/tmp/smsbox.log" access-log = "/tmp/access1.log" log-level = 0 group = sendsms-user username = root password = kokodi user-allow-ip = "192.168.100.*" concatenation = true group = sms-service keyword = TRF omit-empty=true max-messages=0 catch-all = true get-url = "http://192.168.100.114:8080/InterSms/index.jsp?sender=%p&text=%a" accept-x-kannel-headers=true group = sms-service keyword = default omit-empty=true max-messages=0 catch-all = true get-url = "http://192.168.100.114:8080/IncomingSms/index.jsp?sender=%p&text=%a" accept-x-kannel-headers=true group = sms-service keyword = TIB omit-empty=true max-messages=0 catch-all = true get-url = "http://192.168.100.114:8080/InterBrIncSms/index.jsp?sender=%p&text=%a" accept-x-kannel-headers=true Annexe 3 : fichier de configuration de kannel Annexe 4 : Modem falcom swing public int sendsms(String receip, String text, String username, String passwd) throws Exception { Passerelle=getPasserelle(); text = text.replaceAll(" ", "+"); url = new URL("http://"+Passerelle+":10000/cgi-bin/sendsms?username="+username+"&password="+passwd+"&to="+receip+"&text="+text); Cnx = this.connect("GET"); if (Cnx==1){ Rsp=this.displayResponse(); this.disconnect(); } System.out.println(Rsp); return Rsp; } public void run () { try { int contrainte = 1; String Phone; String MsgSend; String Login = "root"; String Password = "kokodi"; double ID; while (contrainte == 1) { try { IpServer = getIpServer(); LoginServer = getLoginServer(); MdpServer = getMdpServer(); Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection ("jdbc:sqlserver://"+IpServer+";User="+LoginServer+";Password="+MdpServer+"; DatabaseName=smsbanking" ); state1 = conn.createStatement(); String SQL = "select CustPhone, SMSTransText, outgoingsmsid from outgoingsms where flag = 0 or flag = -1"; ResultSet rs = state1.executeQuery(SQL); while (rs.next()) { Phone = rs.getString("CustPhone "); MsgSend = rs.getString(" SMSTransText "); ID = rs.getDouble("outgoingsmsid"); Statement state2 = conn1.createStatement(); if (Phone == null || Phone.isEmpty()) { state2.executeUpdate("update outgoingsms set flag=5 where outgoingsmsid='" + ID + "'"); state2.close(); OutgoingSms.sleep(10000); break; } if (Phone != null && MsgSend != null) { Phone = Phone.replaceAll("-", " "); Phone = Phone.replaceAll("/.", " "); Phone = Phone.replaceAll("/", " "); Phone = Phone.trim(); Phone = Phone.replaceAll(" ", ""); if (Phone.length()==7){ if (Phone.substring(0, 1).compareTo("7")==0){ Phone="7".concat(Phone); } if (Phone.substring(0, 1).compareTo("9")==0){ Phone="9".concat(Phone); } } if (Phone.length()>=8){ RspExact = this.sendsms(Phone, MsgSend, Login, Password); int Rep = RspExact; if (RspExact == 0) { state2.executeUpdate("update outgoingsms set flag=1, phonenumber='"+Phone+"' where outgoingsmsid='" + ID + "'"); } else { state2.executeUpdate("update outgoingsms set flag=" + Rep + ", phonenumber='"+Phone+"' where outgoingsmsid='" + ID + "'"); } state2.close(); OutgoingSms.sleep(10000); }else{ state2.executeUpdate("update outgoingsms set flag=4 where outgoingsmsid='" + ID + "'"); state2.close(); OutgoingSms.sleep(10000); } } else { state2.executeUpdate("update outgoingsms set flag=5 where outgoingsmsid='" + ID + "'"); state2.close(); OutgoingSms.sleep(10000); } } rs.close(); state1.close(); conn1.close(); OutgoingSms.sleep(20000); } catch (Exception e) { System.err.println(e); } } } catch (FileNotFoundException ex) { Logger.getLogger(OutgoingSms.class.getName()).log(Level.SEVERE, null, ex); } } public int connect(String method) throws Exception { try { server = (HttpURLConnection)url.openConnection(); server.setDoInput(true); server.setDoOutput(true); server.setRequestMethod(method); server.setRequestProperty("Content-type","application/x-www-form-urlencoded"); server.connect(); return 1; } catch (Exception e) { System.err.println(e.toString()); System.err.println ("erreur de connection à la passerelle"); return -1; } } Annexe 5 : Trois classes principales de l'application HTTP/SQL La classe connect formate la requête http avec une méthode La classe sendsms contient la requête http avec toutes les informations nécessaire afin d'être exécuté au niveau de la passerelle La classe run est la classe principale Annexe 6 : Utilisation de Javaservice pour la création du service CORESMSBANK Annexe 7 : Diagramme de séquence des services de notification évènementielle
Annexe 8 : Architecture simplifiée de la passerelle kannel Sommaire d'identification Titre : Consultation d'historique Résumé : ce cas d'utilisation permet au client de consulter les 4 derniers historiques de son compte à partir de son téléphone portable. Acteurs : Client mobile
Pré conditions : Disposer d'un crédit de communication permettant l'envoi de SMS, Disposer d'un téléphone Post conditions : Un SM avec les 4 derniers historiques est renvoyé au client Description des scénarios - Scénario nominal
- Scénario alternatif
Le système met à jour la table des SM entrant avec pour remarque : « Client non inscrit au service spécifié » Dans ce cas, le scénario nominal s arrête au point 5
Le système met à jour la table des SM entrant avec pour remarque : « Nombre maximal de SM atteint » Dans ce cas, le scénario nominal s'arrête au point 6
Le système met à jour la table des SM sortant avec un statut permettant d'identifier la source d'erreur. Le SM sera renvoyé plus tard. Dans ce cas, le scénario nominal reprendra au point 13. Annexe 9 : Scenarii du cas d'utilisation consultation d'historique Annexe 10 : Diagramme de séquence du cas d'utilisation consultation d'historique
Annexe 11 : Diagramme d'activité du cas d'utilisation consultation d'historique Annexe 12 : Lancement du SMSBOX de kannel Sommaire d'identification Titre : Alerte débit compte Résumé : Ce cas d'utilisation permet d'envoyer un SM à un client lorsque son compte est débité. Acteurs : Client mobile, BANK SI
Pré conditions : Disposer d'un crédit de communication dans le modem de la banque permettant l'envoi du SM, le réseau de l'opérateur de téléphonie doit être opérationnel. Post conditions : Un SM avec le montant débité est envoyé au client Description des scénarios - Scénario nominal
- Scénario alternatif
Le système met à jour cet enregistrement : « Client non inscrit au service spécifié » Dans ce cas, le scénario nominal s arrête au point 4
Le système met à jour cet enregistrement : « Nombre maximal de SM atteint » Dans ce cas, le scénario nominal s'arrête au point 5
Le système met à jour la table des SM sortant avec un statut permettant d'identifier la source d'erreur. Le SM sera renvoyé plus tard. Dans ce cas, le scénario nominal reprendra au point 12 Annexe 13 : Scenarii du cas d'utilisation alerte débit compte Annexe 14 : Diagramme de séquence du cas d'utilisation Alerte débit compte |
|