Accepter MonCash et NatCash dans la même application : quelle architecture ?
posée 4 months ago316 vuesfr
Je veux que mes clients choisissent entre MonCash et NatCash au moment de payer. Comment organiser le code sans dupliquer toute la logique de commande ?
Diagnostic IA
Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.
1 réponse
Séparez ce qui est commun (commande, tentative, vérification du montant, idempotence, comptabilité) de ce qui dépend du fournisseur (authentification, format des appels, page de paiement).
Commande ──► Tentative de paiement (provider = MONCASH | NATCASH)
│
▼
PaymentProvider (interface)
├── MonCashProvider
└── NatCashProvider
Ce qui reste commun, écrit une seule fois :
- création de la tentative avec un identifiant unique,
- vérification serveur (statut + montant) avant de marquer payé,
- passage
EN_ATTENTE → PAYÉEidempotent, - balayage des tentatives en attente,
- rapport de rapprochement par fournisseur.
Ce que chaque fournisseur implémente : startPayment(), getStatus() et, si disponible, la validation des notifications.
En base, une seule table de paiements avec une colonne provider et une colonne provider_reference (unique par fournisseur) :
UNIQUE (provider, provider_reference)
Côté interface, proposez les deux choix avec leurs logos et, si possible, mémorisez le dernier choix du client. Beaucoup de gens n'ont qu'un seul des deux services.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.