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

asked 4 months ago313 viewsfr

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 ?

AI diagnosis

AI-generated. Not an answer — the community below confirms or corrects it. Always verify before relying on it.

1 Answer

8
✓
✓ Accepted answer

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.

Sign in to tell others whether this worked.

answered 4 months ago

Sign in and verify your email to post an answer.