Accepter MonCash et NatCash dans la même application : quelle architecture ?

posée 4 months ago316 vuesfr

7

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

8
✓
✓ Réponse acceptée

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ÉE idempotent,
  • 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é.

answered 4 months ago

Sign in and verify your email to post an answer.