Après avoir envoyé une commande de recharge internet, interrogez l’endpoint /check-id pour suivre le statut et récupérer les détails de la carte lors de l’exécution. La plupart des commandes se terminent en 3-45 secondes, mais certaines peuvent être QUEUED pendant 12-48 heures.
Interrogez toutes les 5-10 secondes jusqu’à ce que la commande atteigne un état final : FULFILLED, REFUNDED ou QUEUED.
La commande est en cours de traitement avec l’opérateur. Durée typique : 3-45 secondes. Continuez l’interrogation toutes les 5-10 secondes.
FULFILLED
Succès ! Carte livrée. card_code, num_trans et date_traitement disponibles. Livrez immédiatement au client.
QUEUED
Planifié pour plus tard. La commande sera traitée dans les 12-48 heures. Ce n’est pas un échec - planifiez une nouvelle vérification après 24 heures et informez le client.
REFUNDED
Échec. La commande a été annulée et remboursée automatiquement. Notifiez le client de l’échec.
async function handleTopupResult(topupId, order) { switch (order.status) { case 'FULFILLED': console.log(`✅ Order fulfilled`); console.log(`Card: ${order.card_code}`); await db.internetOrders.updateOne( { topupId }, { $set: { status: 'FULFILLED', cardCode: order.card_code, fulfilledAt: new Date() } } ); await deliverCard(order); break; case 'QUEUED': console.log(`⏰ Order scheduled for later delivery`); await db.internetOrders.updateOne( { topupId }, { $set: { status: 'SCHEDULED', nextCheckAt: new Date(Date.now() + 24 * 60 * 60 * 1000) } } ); await scheduleRecheck(topupId, 24 * 60 * 60 * 1000); await notifyCustomer(order, 'Your order is scheduled and will be delivered within 48 hours.'); break; case 'REFUNDED': console.log(`❌ Order failed and refunded`); await db.internetOrders.updateOne( { topupId }, { $set: { status: 'REFUNDED', refundedAt: new Date() } } ); await notifyCustomer(order, 'Your order could not be completed. A full refund has been issued.'); break; }}