Accepter MonCash et NatCash dans la même application : quelle architecture ?
poze 4 months ago312 gadefr
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 ?
Dyagnostik IA
Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.
1 Repons
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.
Konekte pou di lòt moun si li te mache.
Sign in and verify your email to post an answer.