Erreur MonCash quand je réutilise le même orderId — que faire ?
poze 2 months ago347 gadefr
Un client a abandonné le paiement puis a voulu réessayer. CreatePayment renvoie maintenant une erreur, apparemment parce que l'orderId a déjà été utilisé. Je ne veux pas créer une nouvelle commande à chaque tentative.
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
C'est voulu : pour MonCash, l'orderId identifie un paiement unique. Réutiliser le même identifiant pour un deuxième paiement est refusé, et c'est une bonne chose (protection contre les doublons).
La solution : séparer la commande et la tentative de paiement.
Commande #1042 (votre objet métier)
├── tentative 1042-a → abandonnée
└── tentative 1042-b → payée ✔
const attempt = await db.paymentAttempt.create({
data: { orderId: order.id, provider: "MONCASH", amountHtg: order.totalHtg },
});
// orderId envoyé à MonCash = identifiant de la TENTATIVE
await createMonCashPayment({ orderId: attempt.id, amount: attempt.amountHtg });
Au retour, payment.reference vous donne l'identifiant de la tentative, qui pointe vers la commande.
Bonus :
- Avant de créer une nouvelle tentative, vérifiez la précédente avec
RetrieveOrderPayment. Si le client a finalement payé, ne lui faites pas payer deux fois. - Utilisez des identifiants non devinables (cuid, UUID) plutôt que des entiers qui se suivent.
Konekte pou di lòt moun si li te mache.
Sign in and verify your email to post an answer.