Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt

Use this file to discover all available pages before exploring further.

Vue d’ensemble

Avant d’envoyer une demande de recharge, validez toutes les saisies pour éviter les erreurs et garantir une expérience utilisateur fluide.
Une validation adéquate réduit les erreurs API et améliore l’expérience utilisateur en détectant les erreurs tôt.

Validation du numéro de téléphone

Les numéros de téléphone doivent correspondre à ce format : ^0[567][0-9]{8}$ Exigences :
  • Doit commencer par 0
  • Le deuxième chiffre doit être 5, 6 ou 7
  • Exactement 10 chiffres au total
  • Uniquement des caractères numériques
  • "0778037340"
  • "0665983439"
  • "0556121212"
function validatePhoneNumber(phone) {
  if (typeof phone !== 'string') {
    return { valid: false, error: 'Phone number must be a string' };
  }
  
  phone = phone.trim();
  
  if (!/^0[567][0-9]{8}$/.test(phone)) {
    return { valid: false, error: 'Invalid phone format. Must be 10 digits starting with 05, 06, or 07' };
  }
  
  return { valid: true, phone };
}

Validation du forfait

Vérifiez que le forfait sélectionné existe et est disponible :
function validatePlan(planCode, plans) {
  const plan = plans.find(p => p.code === planCode);
  
  if (!plan) {
    return { valid: false, error: `Plan ${planCode} not found` };
  }
  
  if (!plan.isEnabled) {
    return { valid: false, error: `Plan ${plan.name} is currently unavailable` };
  }
  
  return { valid: true, plan };
}

Validation du montant

Validez les montants selon le type de forfait (dynamique ou fixe) :
function validateAmount(amount, plan) {
  // Fixed plans use their predefined amount
  if (plan.type === 'fixed') {
    return { valid: true, amount: plan.fixedAmount };
  }
  
  // Dynamic plans require amount within range
  if (!amount) {
    return { valid: false, error: 'Amount is required for dynamic plans' };
  }
  
  const numAmount = Number(amount);
  
  if (isNaN(numAmount) || !Number.isInteger(numAmount)) {
    return { valid: false, error: 'Amount must be an integer' };
  }
  
  if (numAmount < plan.minAmount) {
    return { valid: false, error: `Amount must be at least ${plan.minAmount} DZD` };
  }
  
  if (numAmount > plan.maxAmount) {
    return { valid: false, error: `Amount cannot exceed ${plan.maxAmount} DZD` };
  }
  
  return { valid: true, amount: numAmount };
}

Validation complète

Combinez toutes les validations :
function validateTopUpRequest(data, plans) {
  const errors = [];
  
  // Validate phone
  const phoneValidation = validatePhoneNumber(data.phone);
  if (!phoneValidation.valid) {
    errors.push({ field: 'phone', message: phoneValidation.error });
  }
  
  // Validate plan
  const planValidation = validatePlan(data.planCode, plans);
  if (!planValidation.valid) {
    errors.push({ field: 'planCode', message: planValidation.error });
    return { valid: false, errors };
  }
  
  // Validate amount
  const amountValidation = validateAmount(data.amount, planValidation.plan);
  if (!amountValidation.valid) {
    errors.push({ field: 'amount', message: amountValidation.error });
  }
  
  if (errors.length > 0) {
    return { valid: false, errors };
  }
  
  return {
    valid: true,
    data: {
      phone: phoneValidation.phone,
      planCode: planValidation.plan.code,
      amount: amountValidation.amount
    }
  };
}

// Usage
const result = validateTopUpRequest({
  phone: '0778037340',
  planCode: 'PREPAID_DJEZZY',
  amount: 500
}, plans);

if (!result.valid) {
  console.error('Validation errors:', result.errors);
} else {
  console.log('Valid request:', result.data);
}

Bonnes pratiques

Vérifiez les saisies dans l’interface avant d’effectuer des appels API pour améliorer l’UX.
Ne faites jamais confiance aux saisies client. Validez toujours côté serveur.
Affichez des messages d’erreur précis qui aident les utilisateurs à corriger les problèmes.
Supprimez les espaces et normalisez les saisies avant la validation.

Étapes suivantes

Étape 3 : Envoi des recharges

Apprenez à envoyer des demandes de recharge

Référence API

Documentation API complète