Erreur MonCash quand je réutilise le même orderId — que faire ?
asked 2 months ago350 viewsfr
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.
AI diagnosis
AI-generated. Not an answer — the community below confirms or corrects it. Always verify before relying on it.
1 Answer
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.
Sign in to tell others whether this worked.
Sign in and verify your email to post an answer.