Exercice : Système de Traitement de Paiements
Contexte
Vous développez un système de paiement pour une boutique en ligne qui doit supporter
différents moyens de paiement. L'objectif est de créer une architecture flexible permettant
d'ajouter facilement de nouveaux modes de paiement.
Ainsi vous devez créer une interface IPaiement et l'utiliser pour standardiser le traitement
des différents types de paiements.
Partie 1 : Création de l'interface
Créez une interface nommée IPaiement qui définit les méthodes suivantes :
bool EffectuerPaiement(decimal montant) : pour traiter un paiement
string ObtenirStatut() : pour connaître l'état du paiement
void AnnulerPaiement() : pour annuler une transaction
Partie 2 : Implémentation des classes
Implémentez trois classes concrètes qui réalisent cette interface :
1. PaiementCarteBancaire
o Propriétés : NumeroCarte (string), DateExpiration (DateTime),
Cryptogramme (string)
o Règles métier :
Montant maximum : 5000€ par transaction
La carte ne doit pas être expirée
Le cryptogramme doit faire 3 caractères
2. PaiementPayPal
o Propriétés : Email (string)
o Règles métier :
Montant maximum : 2000€ par transaction
L'email doit être au format valide (contient @ et .)
Simulation d'une connexion au compte PayPal
3. PaiementCryptomonnaie
o Propriétés : AdressePortefeuille (string), TypeCrypto (enum Bitcoin,
Ethereum, Litecoin)
o Règles métier :
Frais de transaction : 1% pour Bitcoin, 2% pour Ethereum, 1.5% pour
Litecoin
L'adresse du portefeuille ne doit pas être vide
Simulation d'une confirmation sur la blockchain
Partie 3 : Gestionnaire de paiements
Créez une classe GestionnairePaiements qui doit :
Permettre d'ajouter différents moyens de paiement (qui implémentent tous
IPaiement)
Proposer une méthode TraiterPaiements(decimal montant) qui tente chaque
moyen de paiement jusqu'à ce qu'un paiement réussisse
Maintenir un historique des 10 dernières transactions (réussies ou échouées)
Permettre d'annuler la dernière transaction réussie
Partie 4 : Programme de test
Créez un programme principal qui :
1. Crée différentes instances de paiement
2. Les ajoute au gestionnaire
3. Tente de traiter un paiement de 1500€
4. Affiche le statut de chaque tentative
5. Affiche l'historique des transactions
6. Annule le paiement si réussi et vérifie le nouveau statut