Erreur MonCash quand je réutilise le même orderId — que faire ?
posée 2 months ago351 vuesfr
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.
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
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.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.