Vous êtes sur la page 1sur 36

TITRE DE TRANSPORT URBAIN ELECTRONIQUE

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

© Fitiavana Niavo, 2021


Table des matières
Liste des tableaux...................................................................................................................ii
Liste des figures....................................................................................................................iii
Glossaire................................................................................................................................iv
Avant-propos..........................................................................................................................1
L’IT University..................................................................................................................1
VANILLA PAY.................................................................................................................1
Remerciements...................................................................................................................2
Introduction............................................................................................................................3
1 Présentation du projet.....................................................................................................4
1.1 Objectifs du projet..................................................................................................4
1.2 Planning de réalisation...........................................................................................4
1.3 Technologies utilisées............................................................................................5
2 Réalisation de l’application..........................................................................................10
2.1 Analyse et conception..........................................................................................10
2.1.1 Analyse de l'existant.........................................................................................10
2.1.2 Conception de l’application.............................................................................11
2.2 Développement par fonctionnalité ou module.....................................................13
2.2.1 Développement de la plateforme.....................................................................13
2.2.2 Développement de l'application.......................................................................22
2.3 État d’Analyse et Statistiques...............................................................................25
2.3.1 Nombre d'utilisateurs par heure.......................................................................25
2.3.2 Répartition des utilisations de cartes par entreprise.........................................26
2.4 Problèmes rencontrés et solutions........................................................................26
3 Évaluation du projet et connaissances acquises...........................................................27
3.1 Bilan pour l'entreprise..........................................................................................27
3.2 Bilan personnel.....................................................................................................28
3.3 Extension et évolution de l’application................................................................28
Conclusion............................................................................................................................29
Bibliographie.........................................................................................................................A
Annexe...................................................................................................................................B

© Fitiavana Niavo, 2021 i


Liste des tableaux
Tableau 1 : Comparaison de Node.js et Java

Tableau 2 : Avantages et inconvénients de EJS

Tableau 3 : Avantages et inconvénients de Express.js

Tableau 4 : Comparaison entre Postgres et Oracle

Tableau 5 : Avantages et inconvénients de l’ORM Sequelize

Tableau 6 : Comparaison entre Java et Kotlin

© Fitiavana Niavo, 2021 ii


Liste des figures
Figure 1 : Diagramme de la réalisation du projet

Figure 2 : Conception de la base de données


Figure 3 : Login

Figure 4 : Formulaire d’insertion du code OTP

Figure 5 : Création d’un utilisateur

Figure 6 : Liste des utilisateurs

Figure 7 : Création d’une entreprise

Figure 8 : Liste des entreprises

Figure 9 : Enregistrement d’une nouvelle carte

Figure 10 : Liste des cartes

Figure 11 : Création d’un rôle

Figure 12 : Liste de tous les rôles

Figure 13 : Attribution de rôles aux utilisateurs

Figure 14 : Lecture de la carte

Figure 15 : Localisation GPS

Figure 16 : Statistique des voyageurs par tranche de deux heures

Figure 17 : Analyse globale par entreprise

© Fitiavana Niavo, 2021 iii


Glossaire
Back-end. Partie non visible de la plateforme, zone de traitement.

Back-office. Plateforme de contrôle, de soutien, d’administration.

Codage. Action de coder en informatique.

Commit. Désigne l’enregistrement effectif d’une transaction.

FinTech. Technologie financière, c’est-à-dire utiliser la technologie pour améliorer les activités
financières.

Framework. Bibliothèque de logiciels aidant les développeurs à simplifier et uniformiser le


codage.

Gitlab. Logiciel libre proposant des fonctionnalités de création, de modification et de suivi de


bugs.

GPS. Système Mondial de positionnement par satellites.

http. Protocole de transfert hypertexte, protocole de communication entre le client et le serveur.

Merge. Fusion de branches dans Gitlab.

Middleware. Logiciel qui joue le rôle de lien entre les applications.

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.

Open Source. Laisser en libre accès le code source du logiciel.

OTP. Mot de passe à usage unique, c’est-à-dire, un mot de passe qui n’est valable que pour une
session.

Pull. Téléchargement d’une branche vers un espace locale.

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.

Startup. Entreprise en démarrage.

© Fitiavana Niavo, 2021 iv


Avant-propos
Le présent mémoire présente les résultats du travail effectué lors de mon stage de fin
d’études de Licence en Informatique de l’IT University; stage effectué au département
informatique de Vanilla Pay durant 3 mois, de novembre 2020 à février 2021.
Afin de poser clairement le contexte de ce mémoire, je vais présenter succincte d’une part de
l’IT University et d’autre part de mon institution/entreprise d’accueil.

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

© Fitiavana Niavo, 2021 1


Vanilla Pay fait la promotion du commerce électronique et du paiement en ligne à
Madagascar.
Nous permettons aux malgaches de recevoir de l'argent en ligne, sur leurs sites web ou leurs
applications, rapidement, facilement et à un prix très intéressant.
Avec nous, nos clients peuvent payer et recevoir de l'argent à travers toutes les passerelles de
paiement comme l'argent mobile et bientôt les banques.

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 :

Je tiens à remercier vivement mon encadreur professionnel Andry


RANDRIAMANAMIHAJA pour ses qualités humaines et professionnelles, pour son
encadrement, ses directives, ses remarques constructives, et sa disponibilité.

Mes remerciements s’adressent aussi à tous les enseignants formateurs de l’IT


University, pour nous avoir dispensé un enseignement de qualité, ainsi qu’au Président et
aux membres du jury, qui ont accepté de juger la soutenance de ma mémoire.

Je témoigne ma reconnaissance à tous les employés au sein de Vanilla Pay de leur


chaleureux accueil et convivialité ainsi que leurs bonnes humeurs.
Et enfin, je voudrais remercier mes proches et ma famille pour leur soutien.

© Fitiavana Niavo, 2021 2


Introduction
L’essentiel du travail que j’ai réalisé a porté sur le thème : « Titre de transport urbain
électronique ».
NFC2 est une technologie de communication sans fil à courte portée permettant l’échange
d’informations. De nos jours, tout est connecté. Afin de faciliter les tâches effectuées par
l’homme, le paiement sans contact fait partie du progrès technologiques. En effet, il permet la
rapidité et la sécurité lors des transactions, tant qu’entre les voyageurs et le receveur qu’entre
le receveur et le propriétaire du bus.
Dans les pays développés, le paiement sans contact fait déjà un quotidien qui est à la
portée de tous. Sur le plan sanitaire, cela fait partie des solutions afin de minimiser les risques
de répandre le Coronavirus qui est une crise à l’échelle mondiale. Alors l’idée est d’apporter
cela à Madagascar. Nous avons choisis uniquement le transport en commun pour commencer
car tout le monde prend le bus dans son quotidien.
Ce présent travail vous exposera alors deux résultats essentiels que j’ai apporté sur ce
projet :
- La mise en place d’un espace Back-Office afin de gérer les différentes gestions
comme la gestion des utilisateurs et la gestion de la carte NFC.
- La mise en fonction d’une application Android qui est utilisé sur le terrain, installée
dans les TPE3, ces derniers scanneront les cartes NFC et effectueront les transactions
automatiquement.
Afin de donner plus d’explications sur ma part de développement, ce mémoire est structuré en
3 parties :
- La présentation du projet,
- La réalisation de l’application,
- L’évaluation du projet et les connaissances acquises.

2
NFC : Near Field Comminucation
3
TPE : Terminal de Paiement Eléctronique

© Fitiavana Niavo, 2021 3


1 Présentation du projet

1.1 Objectifs du projet


Une coopérative veut lancer une nouvelle ligne de transport en commun avec un
paiement sans contact. Vanilla Pay a donc pris ce projet en charge.

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.

Enfin, on pourra faire un suivi de chaque transaction directement en ligne dans la


plateforme, ainsi, la remise des versements est sécurisée et un statistique des recettes peut être
vu. Chaque bus est localisé en temps réel qui pourra empêcher les déviations de trajet et
assurera aussi l’arrivée des passagers au terminus.

1.2 Planning de réalisation


Comme tout projet qui se mène à bien, nous avons utilisé la méthode agile. Avec
l’intégration de nouvelle fonctionnalité et les tests en continu, nous sommes arrivés en ce jour
à un point présentable dans ce mémoire. En effet, le projet est toujours en amélioration, voici
donc une illustration en diagramme de la réalisation faite de ce dernier :
Figure 1 : Diagramme de la réalisation du projet.

© Fitiavana Niavo, 2021 5


1.3 Technologies utilisées
L’entreprise a imposé des nouvelles technologies très intéressantes et puissantes aussi.
En voici toutes ces technologies qui ont fait fonctionner ce projet :

1.3.1 Back-end : Node.js 

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.

Critères Node.js Java

Age Très récent Depuis plus de 20 ans

Performance Single-thread Multi-thread

Rapidité d’écriture Deux fois plus rapide que


Java

Tableau 1 : Comparaison de Node.js et Java

1.3.2 Front-end : EJS

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 :

Critères EJS Jade

4
EJS : Embedded Javascript
5
HTML : HyperText Markup Language

© Fitiavana Niavo, 2021 6


Syntaxe Longue Courte

Complexité Simple Difficile à traiter des choses


simple

Codage S’écrit entre les balises < Ne fait pas de différence


%...%> entre les balises html et les
variables

Tableau 2 : Avantages et inconvénients de EJS

1.3.3 Modèle d’échange entre le front et le back-end : Express.js

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

- Route bien définit à partir des - Callback difficile à appréhender


méthodes http

- Inclus les fonctions middleware

- Rapide et simple d’utilisation

Tableau 3 : Avantages et inconvénients de Express.js

1.3.4 Base de données : PostgreSql

PostgreSql est un système de gestion de base de données relationnelle et objet. Ce


système est concurrent d’autres systèmes de gestions de base de données, comme Oracle par
exemple, deux grands systèmes dont la comparaison est ceci afin de justifier notre choix :
6
Http : Hypertext Transfer Protocol
7
API : Application Interface Language

© Fitiavana Niavo, 2021 7


Critères PostgreSql Oracle

Licence Gratuit et open source Payant

Sécurité Sécurisé et gratuit Payant à part mais plus


sécurisé que PostgreSql

Mise à jour Chaque année avec Tous les deux à quatre ans
correction des bugs tous
les trois mois

Tableau 4 : Comparaison entre Postgres et Oracle

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.

1.3.5 ORM : Sequelize

ORM8 est un type de programme informatique qui se place en interface entre un


programme applicatif et une base de données relationnelle pour simuler une base de données.
Sequelize est un ORM pour Node.js compatible avec PostgreSql. Générant des modèles de la
base de données, Sequelize permet facilement la manipulation des informations.

Avantages Inconvénients

- Facile d’accès à la base de - Logicielle supplémentaire


données - Ne gère pas les requêtes
- Gain de temps dans la création complexes
des modèles

- Lignes de codes réduits

Tableau 5 : Avantages et inconvénients de l’ORM Sequelize

8
ORM : Object-Relational Mapping

© Fitiavana Niavo, 2021 8


1.3.6 Application mobile : Java

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 :

Critères Java Kotlin

Age et popularité Vieux et très populaire Jeune et aussi populaire

Cours Innombrables tutoriels, En cours de construction


articles et documentations d’une communauté

Syntaxe Lourde et verbeux Simple et rapide

Tableau 6 : comparaison entre Java et Kotlin

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.

© Fitiavana Niavo, 2021 9


2.1 Analyse et conception

2.1.1 Analyse de l'existant

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.

2.1.2 Conception de l’application

La conception est la base de tout développement, l’analyse et la conception du projet


nous permet de délimiter les frontières de l’application. Une bonne conception permet donc
une évolution facile, une adaptation rapide des nouvelles fonctionnalités possibles. En
d’autres termes, le temps perdu dans la conception est le temps gagné au développement.

Afin de démarrer notre projet, nous avons créé :

- 11 tables

- 11 classes

© Fitiavana Niavo, 2021 10


- 3 vues

- 14 écrans 

© Fitiavana Niavo, 2021 11


Figure 2 : Conception de la base de données

© Fitiavana Niavo, 2021 12


2.2 Développement par fonctionnalité ou module

2.2.1 Développement de la plateforme

2.2.1.1 Login double authentification

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.

Figure 3 : Login

© Fitiavana Niavo, 2021 13


Figure 4 : Formulaire d’insertion du code OTP9

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.

2.2.1.2 Gestion des utilisateurs

Comme il s’agit d’un paiement et aussi l’utilisation d’un TPE, il y a forcément un ou


plusieurs utilisateurs concernés. Il est alors nécessaire de gérer ces personnes et leurs données
afin de les distinguer et de les protéger. Les utilisateurs finaux vont alimenter le système, c’est
pourquoi ce module a été conçu.

9
OTP : One-Time Password

© Fitiavana Niavo, 2021 14


Figure 5 : Création d’un utilisateur

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.

© Fitiavana Niavo, 2021 15


Figure 6 : Liste des utilisateurs

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.

2.2.1.3 Gestion des entreprises

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.

© Fitiavana Niavo, 2021 16


Figure 7 : Création d’une entreprise

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.

Figure 8 : Liste des entreprises

© Fitiavana Niavo, 2021 17


Sur cette page se trouve la liste de toutes les entreprises valides et non valides. On dit
non valide lorsqu’il a déjà été supprimé par l’administrateur grâce à l’icône de suppression.
On y trouve aussi l’icône de modification qui permettra de mettre à jour ses informations
initiales.

2.2.1.4 Gestion des cartes NFC

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.

Figure 9 : Enregistrement d’une nouvelle carte

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

© Fitiavana Niavo, 2021 18


Figure 10 : Liste des cartes

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.

2.2.1.5 Gestion des rôles

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.

© Fitiavana Niavo, 2021 19


Figure 11 : Création d’un rôle

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.

Figure 12 : Liste de tous les rôles

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.

© Fitiavana Niavo, 2021 20


2.2.1.6 Attribution de rôles aux utilisateurs

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 :

Figure 13 : Attribution de rôles aux utilisateurs

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.

© Fitiavana Niavo, 2021 21


2.2.2 Développement de l’application

Dans cette deuxième partie, je présente ma part sur le développement de l’application


Android du projet. Il est bon à savoir que l’application sera installée dans les TPEs. Un TPE
est un appareil Android possédant, dans notre cas, la fonctionnalité NFC, une connexion
Internet et la localisation qui sont suffisants pour la marche du module. Voici les deux
grandes fonctionnalités qui met en évidence l’application.

2.2.2.1 Lecture de la carte NFC

Pour connecter le TPE et la carte, il a fallu développer la fonctionnalité Lecture de


carte NFC.

Figure 14 : Lecture de la carte

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

© Fitiavana Niavo, 2021 22


TPE pour signaler une transaction effective, dans le cas contraire, l’écran sera rouge. Un écran
d’erreur s’affichera aussi lorsque la carte est invalide, c’est-à-dire si elle n’est pas enregistrée
dans la base de donnée ou si elle n’est associée à aucun utilisateur.

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.

2.2.2.2 Localisation GPS11

Après une transaction effectuée, le système capturera la position GPS du TPE en


question. Effectivement cela se passera après chaque transaction, cette fonctionnalité est
primordiale car elle permet de savoir en premier lieu où la transaction a eu lieu.
Deuxièmement, elle apporte des historiques sur chaque paiement, le lieu, la date, le créditeur,
le débiteur et le montant de la transaction.

11
GPS : Global Positioning System

© Fitiavana Niavo, 2021 23


Figure 15 : Localisation GPS et transactions

Cette fonctionnalité ne peut s’effectuer si l’appareil ne possède pas un GPS. Le


résultat de la localisation se trouve dans la plateforme en ligne, on peut voir grâce à la carte, la
position exacte de la transaction en question.

© Fitiavana Niavo, 2021 24


2.3 État d’Analyse et Statistiques

2.3.1 Nombre d’utilisateurs par heure

Figure 19 : Statistique des voyageurs par tranche de deux heures

Dans ce statistique, on peut observer le nombre de passagers sur chaque tranche de


deux heures sur une journée. En horizontale le nombre des voyageurs et en verticale les
tranches d’heure. La date à visionner est au choix et on peut en conclure sur ce statistique
l’heure de pointe chaque jour pour la coopérative. Ce statistique porte une importance
capitale, par exemple les chauffeurs peuvent savoir quand il devrait prendre leurs pauses afin
d’éviter une fatigue très tôt qui les obligent à terminer leur service très tôt. Aussi, cela aide
facilement pour un bilan et de concrétiser les recettes.

© Fitiavana Niavo, 2021 25


2.3.2 Répartition des utilisations de carte par entreprise

Figure 16 : Analyse globale par entreprise

Sur ce deuxième statistique, il est plutôt du côté de l’administrateur de la plateforme. Il


affiche les parts d’utilisations des cartes pour chaque compte-entreprise, afin de déterminer
quelle entreprise est le plus convoitée par le paiement sans contact. A partir de cela, par
exemple nous pouvons nous focaliser sur des entreprises en particulier.

2.4 Problèmes rencontrés et solutions

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.

© Fitiavana Niavo, 2021 26


- Régression : après la modification des champs de tables en base, nous avons oublié
de regénérer les modèles avec Sequelize et toutes les fonctionnalités ne
fonctionnaient plus. Ce qui nous a pris beaucoup de temps à trouver.

- 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.

3 Évaluation du projet et connaissances acquises

3.1 Bilan pour l'entreprise


Le stagiaire a montré énormément de volonté depuis le début du projet. L’intégration
aux procédures de travail de la startup d’accueil en a été facilitée. Au cours de son stage, il a
été constaté son évolution en termes de réalisation de tâches et de compétences en
développement informatique. Sans parler des périodes volontaires pour travailler la nuit et le
week-end pour respecter le calendrier.
Le projet est assez spécifique de part sa nature. Il y a d’abord l’objectif d’être exploité
par les coopératives de transport en commun et l’utilisation par le grand public. Ensuite
l’aspect innovant en lui-même, pour les cartes sans contact NFC et les TPEs spécifiques. Tout
cela nécessite beaucoup d’interactivités.
Actuellement, ce projet est en attente de lancement avec la mise en exploitation de la
gare routière au by-pass.
La mission que s’est fixé l’ITU est atteinte en complément de ce stage professionnel.

© Fitiavana Niavo, 2021 27


3.2 Bilan personnel
Ces trois mois de stage était une expérience professionnelle la plus enrichissante.
Effectivement, il m’a permis de découvrir la vie professionnelle et de participer à un projet
réel.

J’ai pu acquérir encore plus, tout d’abord le sens de la responsabilité, puis le


dévouement à terminer mes tâches respectives, et enfin renforcer mon savoir en découvrant
les nouvelles technologies.

La plus importante, ce stage m’a permis de me hisser et de m’intégrer dans des


discussions professionnelles que relationnelles. Mon sens de l’écoute et de compréhension
s’est développé grâce aux termes professionnels utilisés.

3.3 Extension et évolution de l’application


Des évolutions ont été déjà programmées, comme par exemple la lecture des cartes
Visa sans contact. Cela permettrait un autre mode de paiement sans contact. Ajouter des
sécurités plus adéquates au NFC, l’intégrité des données, c’est-à-dire vérifier si les données
n’ont pas été modifiées. La réinitialisation de mot de passe des utilisateurs, la recharge du
solde via Vanilla Pay. Cette solution de paiement pense s’évoluer et pense être généralisée et
utilisée par toutes les grandes et petites entreprises.

© Fitiavana Niavo, 2021 28


Conclusion
Ainsi, j’ai effectué mon stage de fin d’études afin d’obtenir ma Licence en
développement d’applications au sein de Vanilla Pay. J’ai pu acquérir plusieurs points positifs
qui m’ont initialisé à la vie professionnelle.

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.

© Fitiavana Niavo, 2021 29


Bibliographie
MIDI MADAGASCAR, Société Générale Madagasikara : Lancement du système de
paiement sans contact [en ligne]. Disponible sur : http://www.midi-
madagasikara.mg/economie/2020/05/26/societe-generale-madagasikara-lancement-du-
systeme-de-paiement-sans-contact/ (consultée le 16-11-2020)

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)

PRIYA PEDAMKAR, Oracle vs PostgreSQL [en ligne]. Disponible sur :


https://www.educba.com/oracle-vs-postgresql/ (consultée le 18-11-2020)

TUTORIALSPOINT, Node.js Tutorial [en ligne]. Disponible sur :


https://www.tutorialspoint.com/nodejs/index.htm (consultée le 22-11-2020)

DEVELOPERS, Build your first app [en ligne]. Disponible sur :


https://developer.android.com/training/basics/firstapp (consultée le 4-1-2021)

DEVELOPERS, NFC basics [en ligne]. Disponible sur :


https://developer.android.com/guide/topics/connectivity/nfc/nfc (consultée le 6-1-
2021)

DEVELOPERS, Location [en ligne]. Disponible sur :


https://developer.android.com/things/sdk/drivers/location (consultée le 8-1-2021)

© Fitiavana Niavo, 2021 A


Annexe

© Fitiavana Niavo, 2021 B

Vous aimerez peut-être aussi