Memoire L3
Memoire L3
Memoire L3
par
RANDRIANEKENA Fitiavana Niavo
Mémoire présenté
en vue de l’obtention du grade de Licence
en Informatique
option Développement d’application
Mars, 2021
Jury :
Dr Olivier ROBINSON, président
M. Tahina RAZAFINJOELINA, examinateur
M. Andry RANDRIAMANAMIHAJA, encadreur professionnel
FinTech. Technologie financière, c’est-à-dire utiliser la technologie pour améliorer les activités
financières.
NFC. Near Field Communication, technologie de communication sans fil à courte portée et à
haute fréquence permettant l’échange d’informations entre périphériques.
OTP. Mot de passe à usage unique, c’est-à-dire, un mot de passe qui n’est valable que pour une
session.
Push. Montée des codes locales vers une branche dans Gitlab.
Routage. Mécanisme par lequel des chemins sont sélectionnés dans un réseau pour transmettre
des données depuis un expéditeur jusqu’à un ou plusieurs destinataires.
L’IT University
Fondée en 2011, l’IT University (ou ITU) est une université privée, spécialisée en
informatique, formant les jeunes bacheliers scientifiques :
en trois ans, pour l‘obtention d’une Licence, option Développement, Réseaux et Bases
de Données ou Web et Design
en cinq ans, pour l’obtention d’un Master MBDS en coopération avec l’Université
Côte d’Azur à Nice Sophia Antipolis - France
Étant une formation professionnalisante, l’ITU a tissé des liens forts avec ses partenaires
industriels, dont l’opérateur convergent TELMA et la plupart des entreprises et institutions du
secteur des TIC1. Ces partenaires participent effectivement à la formation par la fourniture de
connexion Internet à haut débit, l’envoi de conférenciers ou encore par l’accueil des étudiants
en stage.
D’autre part, le corps enseignant de l’ITU est constitué intégralement de spécialistes de très
haut niveau et obligatoirement actifs professionnellement dans leurs domaines respectifs.
Enfin, l’ITU est une Microsoft Imagine Academy en plus d’être un Oracle Gold Partner.
VANILLA PAY
Inspiré de Paypal et créé par Mr Andry RANDRIAMANAMIHAJA en 2013, Vanilla
Pay est une startup FinTech opérant dans le domaine du paiement en ligne. De 2013 à 2015 il
a développé la première version de Vanilla Pay dans laquelle les entreprises s’enregistrent et
intègrent un module de ce dernier dans leurs sites, les clients n’ont qu’à entrer leur numéro
mobile money pour effectuer le paiement et les entreprises peuvent faire un suivi des achats.
1
TIC : Technologies de l’Information et de la Communication
Remerciements
Tout d’abord, je me dois de remercier le Dieu tout puissant pour toute la volonté et le
courage qu’il m’a donné pour l’achèvement de ce stage.
J’aimerais exprimer mes reconnaissances envers toutes les personnes qui ont contribué à
l’élaboration de ce mémoire :
2
NFC : Near Field Comminucation
3
TPE : Terminal de Paiement Eléctronique
En premier lieu, il s’agit de faciliter toutes transactions dans les bus, de plus, en ce
temps de crise sanitaire, cela fait partie des préventions contre le Covid-19.
En second lieu, le paiement sans contact peut apporter le confort et le calme dans les
arrêts de bus car il faudra payer avec sa carte avant de monter. Très pratique.
Node.js est une plateforme en Javascript orienté sur le côté serveur. Effectivement
c’est une alternative à Java ou ASP.net. Node.js a été choisi car comme tous navigateurs sont
équipés d’un moteur Javascript, il est le plus facile à appréhender en dehors du navigateur.
C’est-à-dire on a du Javascript sur le côté client et aussi de même sur le côté serveur. Ainsi, le
codage est plus rapide sans se permuter d’un langage à un autre.
EJS4 est un moteur de création de modèles qui permet de générer du HTML 5 avec du
Javascript brut. Node.js et EJS font une paire très simple mais très efficace et aussi rapide
pour passer du côté serveur au côté client de l’application. Il existe une alternative à EJS,
Jade, un autre moteur de template pour node.js; après une analyse, on a choisi EJS avec ces
avantages :
4
EJS : Embedded Javascript
5
HTML : HyperText Markup Language
Express.js est une infrastructure Web minimaliste, souple et rapide pour Node.js. Elle
est très flexible et fournit plusieurs méthodes utilitaires http6 et de middleware pour la création
d’une API7 simple et rapide. Il existe effectivement plusieurs framework comme Fastify ou
Koa mais Express.js est selon nous, apporte déjà toutes les fonctionnalités nécessaires au
routage de notre projet.
Avantages Inconvénients
Mise à jour Chaque année avec Tous les deux à quatre ans
correction des bugs tous
les trois mois
Oracle est une des meilleures gestion de base de données, il offre de meilleurs services
mais payant. Postgres au contraire, est gratuit et se rivalise à Oracle.
Avantages Inconvénients
8
ORM : Object-Relational Mapping
Java est un langage qui peut créer une application mobile native Android. En effet, il
n’est pas compatible pour d’autres système comme IOS. Créer une application Java garantit
qu’elle sera cent pour cent compatible Android. Android est le système d’exploitation le plus
utilisé avec 81% du marché contre IOS et Windows Phone en 2019. Kotlin, une alternative à
Java pour concevoir des applications natives se concurrence à Java, voici une comparaison
assez simple :
Visiblement Kotlin est le mieux abordable mais pour un système sûr et maintenable,
Java a été choisi pour son âge et ses centaines de solutions exposées en ligne en cas de bugs.
2 Réalisation de l’application
Le processus du fonctionnement du projet se résume comme suit : un utilisateur paie
devant un TPE avec sa carte NFC. Ensuite, le TPE fait appel à un API du serveur pour la
vérification de sa carte et le solde à payer. Puis, la transaction si toutes les vérifications sont
bonnes. Enfin, le serveur renvoie le retour vers le terminal qui sera affiché sur l’écran. Afin de
permettre ce processus, voici toutes les étapes qui ont permis à ce dernier de fonctionner.
Le progrès de nos jours ne cesse d’évoluer dans les pays en développement. En Chine,
en Amérique ou en France, la majorité de la population n’utilise plus de billets. A
Madagascar, très peu d’institutions offrent cette mode de transaction, on peut trouver cela
seulement avec les cartes bancaires et les TPE ayant le système NFC. Paru dans les journaux
l’année dernière, les détenteurs de la carte VISA peuvent se faciliter les transactions dans les
stations ou les boutiques du réseau Shell, la Société Générale, BOA, …etc. Les grandes
institutions bancaires ont aussi adopté ce mode.
Mais ce n’est pas tout le monde qui peut se fournir d’une carte bancaire. De plus, du
côté sanitaire, on trouve plus d’interactions, et plus de gens dans les transports en communs
que n’importe où. Ce thème a pour but de faire respecter les gestes sanitaires tout en vivant
notre quotidien, et enfin donner à tout le monde le goût de la simplicité, la rapidité, pour que
chacun évolue avec le progrès technologique.
- 11 tables
- 11 classes
- 14 écrans
Le login est une procédure où l’utilisateur entre son identifiant et son mot de passe
afin d’accéder dans la plateforme. Cela permet de protéger leurs données personnelles. Ici,
notre login est à double authentification, c’est-à-dire après que ses informations ont été
validées par le système, l’utilisateur est obligé de saisir un code à utilisation unique que le
système lui a envoyé par email. Ce procédé est le plus sécurisé jusqu’à maintenant contre les
pirates.
On insère le code OTP sur cet écran, la saisie du code n’est valable que cinq minutes.
Après ce délai, l’utilisateur est obligé de renvoyer le code.
9
OTP : One-Time Password
Tout d’abord, la création d’un utilisateur est la première étape à faire, il y a des
champs obligatoires et facultatifs dans le formulaire. Un utilisateur peut être associé à une
entreprise ou pas. Dans le cas où il en est associé, il deviendra un actionnaire de cette
entreprise ; dans le cas contraire, il sera un simple utilisateur. En cliquant sur « Enregistrer »,
les contrôles de valeurs sont exécutés. Après cette validation, un mail sera envoyé à
l’utilisateur inscrit afin d’activer son compte. Son solde sera alors de 1 000 Ariary par défaut.
Dans cet écran, on peut apercevoir la liste de tous les utilisateurs. On peut interagir sur
chaque icône : modifier, supprimer. L’icône de suppression permet de désactiver un
utilisateur mais pas de le supprimer définitivement, sa date de fin est alors ajoutée, ce qui
informe que ce dernier n’est plus valide.
Si toutefois les informations d’un utilisateur devrait être modifié, sur cet affichage se
présente un bouton qui permet de le faire.
Il est bon de savoir que le projet vise déjà loin dans sa conception. En effet, ce sont
d’abord des entreprises comme la coopérative qui est le premier utilisateur du système, c’est
après que viennent les utilisateurs/consommateurs proprement dit. L’entreprise est le
propriétaire d’un ou plusieurs TPE. C’est-à-dire qu’en général, l’utilisateur est le créditeur et
l’entreprise le débiteur des transactions.
Dans ce premier écran, on crée une entreprise en complétant les champs ci-dessus, ses
informations qui vont lui démarquer des autres entreprises utilisant la plateforme. En cliquant
sur Enregistrer on contrôle toutes les valeurs tel qu’une exception sera levée si le nom ou
l’email entré existe déjà dans la base de données.
Un utilisateur ne peut posséder qu’une seule carte. Dans sa carte se trouve l’identifiant
de cette carte. Une carte peut être créditer autant de fois qu’il peut être dépenser. On gère ces
cartes afin de les contrôler à distance, par exemple le localiser à chaque transaction, le
désactiver dans des cas particuliers, ou bien voir l’historique de toutes ses transactions.
A Madagascar, il n’existe pas encore d’entreprise créant des cartes NFC. Il est alors
nécessaire d’en commander à l’étranger. C’est dans cette fonctionnalité qu’on enregistre les
nouvelles cartes reçues. Chaque carte a son UID10 bien distinct, c’est son identifiant propre
qu’on utilisera comme clé primaire, il ne peut y avoir deux ou plusieurs cartes de même UID.
10
UID : User Identifier
Dans cette liste s’affiche toutes les cartes valides et non valides. Aucun utilisateur
n’est associé à une carte par défaut, c’est seulement lors de la création d’un utilisateur qu’on
peut lui assigner une carte non assignée à d’autre compte.
Chaque carte a un état qui définit sa validité, on peut voir son état se varier de valide à
non valide ; si une carte est non valide, cela veut dire que cette dernière a été supprimée.
Chaque utilisateur, chaque entreprise ont un ou plusieurs rôles bien définit. Un rôle
permet d’avoir l’accès à une ou plusieurs fonctionnalités de l’application, cet accès est
modifiable à chaque rôle. Il est important de définir les rôles pour un utilisateur. Avoir une
gestion des rôles donne l’avantage à des contrôles dynamiques des utilisateurs, leurs rôles
définissent leurs limites dans la plateforme.
Comme toutes les gestions que nous venons de voir ci-dessus, on peut créer un rôle. Il
suffit de donner un nom et de lui donner un code unique par rapport à tous les rôles existant
dans la base de données. Un message d’erreur s’affichera lorsque cette contrainte se présente.
Dans cette liste, nous pouvons voir et actionner deux boutons, l’un permet de
supprimer le rôle correspondant. Ici toujours, supprimer veut dire désactiver en ajoutant une
date de fin à l’élément sélectionné. L’autre bouton permet de le modifier en lui donnant un
nouveau nom et un nouveau code. En respectant la contrainte de doublon.
Voici le module qui met en relation les rôles et les utilisateurs. Ceci peut seulement
être accédé par l’administrateur de la plateforme. Il permet d’assigner un ou plusieurs rôles à
un utilisateur. Il a été développé pour attribuer et changer directement les rôles dans la
plateforme avec une interface. Grâce à cette manipulation, il est plus simple de gérer les droits
d’un utilisateur. L’accès à la page se trouve dans la liste des utilisateurs. Voici comment se
présente cette attribution :
A gauche se trouve tous les rôles valides existant en base, et à droite les rôles actuels
appartenant à l’utilisateur précédemment choisi, on peut basculer chaque rôle de gauche à
droite, en validant les modifications sur Enregistrer, on modifie les rôles de l’utilisateur, en
cliquant sur Enregistrer on valide les modifications.
En choisissant Lecture de carte, l’appareil se met en écoute des cartes NFC. Alors en
rapprochant la carte de l’appareil, lorsque celui-ci détecte une carte, il prend aussitôt les
informations stockées dans la carte. On y trouve une seule information en chaîne de
caractère : l’UID de la carte, cette chaîne sera donc envoyée au serveur afin de trouver le
propriétaire et son solde. Si tout va bien, la transaction peut avoir lieu si le compte de
l’utilisateur a assez de solde pour permettre la transaction. Un écran vert s’affichera sur le
Pour la sécurité des cartes, quelques précautions peuvent être prises parce qu’à
présent, le type de puce NFC que nous utilisons est « Mifare Classic EV1 » qui est une carte
mémoire disposant d’un numéro de série de 56 bits pré-encodé. Ce numéro qui n’est plus
désormais unique. Donc on peut par exemple mettre la carte dans une pochette en aluminium
afin d’éviter les lectures non autorisées des cartes.
11
GPS : Global Positioning System
Les problèmes rencontrés durant le stage étaient plusieurs, les plus intéressants
étaient :
- Mal utilisation de gitlab : en effet, la maîtrise de gitlab n’était pas au point. Nous
avons confondu la définition des termes « commit », « merge » et le non-respect du
processus commit - pull - merge - push. Ce problème a causé la suppression des
améliorations faite par l’équipe. Une remise au point a été faite afin de remettre les
choses au clair.
- Reprise des codes : il a été difficile de reprendre les codes du membre de l’équipe.
La compréhension de leur logique nous a fait perdre des temps précieux. Afin d’y
remédier, nous avons mis à disposition des normes de codage, comme mettre des
commentaires à chaque étape du code, aussi faire parler les variables, c’est-à-dire
donner un nom qui détermine son acte dans le codage.
Nous avons pu atteindre notre objectif qui est de mettre en place une plateforme de
gestion et une application. L’entreprise a marqué sa satisfaction grâce à mon dévouement et
ma volonté de rattraper le programme de notre calendrier en travaillant la nuit ou même le
week-end. Nous avons pu mettre en place un système reflètant le progrès déjà éxistant dans
les pays étrangers et enfin cela est une prévention contre le Covid-19.
Ce stage m’a permis de m’éclaircir dans le monde du travail, il m’a aussi permis
d’améliorer et d’enrichir mes compétences personnelles. Tels que le sens de la responsabilité,
mon sens de m’exprimer dans des discussions, et aussi l’esprit de travail en équipe qui est très
important en développement.
Pour ce qui est du projet, des évolutions peuvent et doivent être imposées. Comme
l’amélioration de la sécurité du carte NFC, l’adaptation avec les cartes visa et d’autres
évolutions par rapport à la gestion des utilisateurs et des entreprises.
FAMOCO, FX100 : Petit terminal portable NFC très sécurisé [en ligne]. Disponible sur :
https://www.famoco.com/fr/produits/terminaux-portables/fx100/ (consultée le 16-11-
2020)