Guide Développeur14 mars 2024 • 12 min de lecture

Guide d'intégration de l'API SMS pour la RDC : Documentation complète pour les développeurs

Apprenez à intégrer la messagerie SMS dans votre application en RDC. API RESTful avec des exemples dans plusieurs langages de programmation.

Que vous développiez une application fintech à Kinshasa, une plateforme e-commerce à Lubumbashi, ou toute application nécessitant l'envoi de SMS en République Démocratique du Congo, ce guide vous accompagnera pas à pas dans l'intégration de l'API SMS de DRCNotify.

Pourquoi utiliser une API SMS en RDC ?

Les API SMS sont essentielles pour les applications modernes en RDC car :

  • Portée universelle : Le SMS fonctionne sur tous les téléphones, sans smartphone ni internet requis
  • Livraison instantanée : Essentiel pour la vérification OTP, les alertes de transaction et les notifications urgentes
  • Taux d'ouverture élevé : 98 % des messages SMS sont lus dans les 3 minutes
  • Support multi-opérateurs : Atteignez vos clients sur Vodacom, Airtel, Orange et Africell depuis une seule API
  • Automatisation : Déclenchez des messages de manière programmatique en fonction des actions utilisateur ou des événements

Premiers pas : Identifiants API

Avant de commencer à coder, vous aurez besoin d'identifiants API :

  1. Créez un compte DRCNotify (gratuit avec des crédits SMS)
  2. Accédez à Tableau de bord → Paramètres API
  3. Générez votre clé API
  4. Copiez votre clé API et votre Account SID

⚠️ Bonne pratique de sécurité

N'exposez jamais votre clé API dans le code côté client ou dans des dépôts publics. Effectuez toujours les appels API depuis votre serveur backend.

Point d'accès API et authentification

URL de base :

https://api2.smsala.com

Point d'accès Envoi SMS :

POST https://api2.smsala.com/SendSmsV2

Authentification :

Via le paramètre apiToken dans le corps de la requête JSON (aucun en-tête Authorization nécessaire)

Envoyer votre premier SMS

L'opération la plus courante est l'envoi d'un seul message SMS. Voici comment procéder dans différents langages de programmation :

Exemple Python

import requests

API_TOKEN = "your_api_token_here"
API_URL = "https://api2.smsala.com/SendSmsV2"

def send_sms(to, message, sender_id="DRCNotify"):
    payload = [
        {
            "apiToken": API_TOKEN,
            "messageType": 1,        # 1=Promotional, 2=Transactional, 3=OTP
            "messageEncoding": 1,     # 1=Default
            "destinationAddress": to, # Format: 243990000000 (no + prefix)
            "sourceAddress": sender_id,
            "messageText": message
        }
    ]

    response = requests.post(API_URL, json=payload)
    return response.json()

# Send SMS
result = send_sms("243990000000", "Bonjour! Votre code OTP est: 123456")
print(result)
# Response: [{"MessageId": 25, "OperationCode": 0, "Status": "Success", ...}]

Exemple Node.js

const axios = require('axios');

const API_TOKEN = 'your_api_token_here';
const API_URL = 'https://api2.smsala.com/SendSmsV2';

async function sendSMS(to, message) {
  try {
    const response = await axios.post(API_URL, [
      {
        apiToken: API_TOKEN,
        messageType: 1,        // 1=Promotional, 2=Transactional, 3=OTP
        messageEncoding: 1,    // 1=Default
        destinationAddress: to, // Format: 243990000000 (no + prefix)
        sourceAddress: 'DRCNotify',
        messageText: message
      }
    ]);

    return response.data;
  } catch (error) {
    console.error('Error sending SMS:', error.response?.data);
    throw error;
  }
}

// Send SMS
sendSMS('243990000000', 'Bonjour! Votre code OTP est: 123456')
  .then(result => console.log(result));
// Response: [{"MessageId": 25, "OperationCode": 0, "Status": "Success", ...}]

Exemple PHP

<?php

$apiToken = 'your_api_token_here';
$apiUrl = 'https://api2.smsala.com/SendSmsV2';

function sendSMS($to, $message) {
    global $apiToken, $apiUrl;

    $data = array(
        array(
            'apiToken' => $apiToken,
            'messageType' => 1,        // 1=Promotional, 2=Transactional, 3=OTP
            'messageEncoding' => 1,    // 1=Default
            'destinationAddress' => $to, // Format: 243990000000 (no + prefix)
            'sourceAddress' => 'DRCNotify',
            'messageText' => $message
        )
    );

    $ch = curl_init($apiUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json'
    ));

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// Send SMS
$result = sendSMS('243990000000', 'Bonjour! Votre code OTP est: 123456');
print_r($result);

?>

Envoi de SMS en masse

Pour envoyer à plusieurs destinataires, utilisez le point d'accès SMS en masse :

// Node.js Bulk SMS Example
// Send to multiple recipients by passing an array of message objects

async function sendBulkSMS(recipients) {
  const messages = recipients.map(r => ({
    apiToken: API_TOKEN,
    messageType: 1,        // 1=Promotional, 2=Transactional, 3=OTP
    messageEncoding: 1,
    destinationAddress: r.to,  // Format: 243990000000 (no + prefix)
    sourceAddress: 'DRCNotify',
    messageText: r.message
  }));

  const response = await axios.post(
    'https://api2.smsala.com/SendSmsV2',
    messages
  );

  return response.data;
}

// Usage
const recipients = [
  { to: '243990000001', message: 'Message for customer 1' },
  { to: '243990000002', message: 'Message for customer 2' },
  { to: '243990000003', message: 'Message for customer 3' }
];

sendBulkSMS(recipients).then(result => console.log(result));

Gestion de la vérification OTP

Pour les flux d'authentification, utilisez notre point d'accès OTP dédié :

// Send OTP via SMSala API (messageType 3 = OTP)
async function sendOTP(phoneNumber, otpCode) {
  const response = await axios.post(
    'https://api2.smsala.com/SendSmsV2',
    [
      {
        apiToken: API_TOKEN,
        messageType: 3,          // 3 = OTP message
        messageEncoding: 1,
        destinationAddress: phoneNumber, // Format: 243990000000
        sourceAddress: 'DRCNotify',
        messageText: `Votre code OTP est: ${otpCode}. Valide 5 minutes.`,
        callBackUrl: 'https://yourapp.com/webhooks/sms-delivery'
      }
    ]
  );

  // Store the MessageId for delivery tracking
  return response.data[0].MessageId;
}

// Generate and send OTP
const otp = Math.floor(100000 + Math.random() * 900000).toString();
const messageId = await sendOTP('243990000000', otp);
// Store otp + messageId in your database for later verification

// Verify OTP: compare the code the user enters against what you stored.
// Delivery confirmation comes via webhook callback or DLR check:
// GET https://api2.smsala.com/Dlr/GetDetails?apiToken=YOUR_TOKEN&messageId=MESSAGE_ID

Vérification du statut de livraison

Suivez la livraison des messages avec le point d'accès de statut :

async function checkDeliveryStatus(messageId) {
  const response = await axios.get(
    'https://api2.smsala.com/Dlr/GetDetails', {
      params: {
        apiToken: API_TOKEN,
        messageId: messageId
      }
    }
  );

  return response.data;
  // Returns delivery report with status details
}

Webhooks pour les rapports de livraison

Au lieu d'interroger le statut en continu, configurez des webhooks pour recevoir les notifications de livraison :

// Express.js webhook endpoint for SMSala delivery callbacks
// Set callBackUrl in your SendSmsV2 request to receive these
app.post('/webhooks/sms-delivery', (req, res) => {
  const delivery = req.body;

  console.log(`Message ${delivery.messageId} status: ${delivery.status}`);
  console.log(`DLR Status: ${delivery.dlrStatus}`);
  console.log(`Delivered to: ${delivery.destinationAddress}`);
  console.log(`Remarks: ${delivery.remarks}`);

  // Update your database
  updateMessageStatus(delivery.messageId, delivery.dlrStatus);

  res.status(200).send('OK');
});

// Example webhook payload:
// {
//   "messageId": 22,
//   "operationCode": 0,
//   "status": "Success",
//   "dlrStatus": "Delivered",
//   "destinationAddress": "243990000000",
//   "remarks": "Dlr Status is : Delivered"
// }

Format des numéros de téléphone pour la RDC

Important : Utilisez le format international (sans préfixe +)

Utilisez toujours le format international sans le préfixe + pour les numéros de téléphone en RDC :

  • ✅ Correct : 243990000000
  • ✅ Correct : 243810000000
  • ❌ Incorrect : +243990000000 (pas de préfixe +)
  • ❌ Incorrect : 0990000000 (indicatif pays manquant)
  • ❌ Incorrect : 990000000 (indicatif pays manquant)

Gestion des erreurs

L'API renvoie des codes de statut HTTP standard et des messages d'erreur :

  • 200 OK : Requête réussie
  • 400 Bad Request : Paramètres invalides (vérifiez le format du numéro, la longueur du message)
  • 401 Unauthorized : Clé API invalide ou manquante
  • 402 Payment Required : Crédits insuffisants
  • 429 Too Many Requests : Limite de débit dépassée
  • 500 Server Error : Problème temporaire, réessayez avec un délai exponentiel

Limites de débit

Pour garantir une utilisation équitable et la stabilité du système :

  • SMS unitaire : 100 requêtes par minute
  • SMS en masse : 10 requêtes par minute (jusqu'à 1 000 destinataires par requête)
  • OTP : 50 requêtes par minute
  • Vérifications de statut : 200 requêtes par minute

Bonnes pratiques pour les applications en RDC

  1. Horaires d'envoi : Évitez les envois entre 22h et 7h sauf urgence
  2. Langue : Utilisez le français ou les langues locales appropriées (lingala, swahili, etc.)
  3. Identifiant d'expéditeur : Utilisez un nom de marque reconnaissable (11 caractères maximum)
  4. Longueur du message : Restez sous les 160 caractères pour éviter les messages en plusieurs parties
  5. Logique de réessai : Implémentez un délai exponentiel pour les requêtes échouées
  6. Journalisation : Enregistrez toutes les requêtes et réponses API pour le dépannage
  7. Sécurité : Ne journalisez et n'exposez jamais les numéros de téléphone complets dans les messages d'erreur

Tester votre intégration

Utilisez notre environnement sandbox pour les tests :

Identifiants de test : Contactez notre équipe de support pour demander des identifiants API de test pour le développement et les tests.

Utilisez les identifiants de test pour valider votre intégration avant la mise en production. Les messages de test ne seront pas livrés aux destinataires réels et ne consommeront pas de crédits de production. Demandez des identifiants de test ici.

Liste de vérification complète de l'intégration

  • ✓ Identifiants API obtenus
  • ✓ Appels API backend sécurisés configurés
  • ✓ Validation des numéros de téléphone implémentée
  • ✓ Gestion des erreurs et logique de réessai ajoutées
  • ✓ Webhooks configurés pour les rapports de livraison
  • ✓ Tests effectués avec les identifiants de test
  • ✓ Limitation de débit implémentée de votre côté
  • ✓ Journalisation et surveillance ajoutées
  • ✓ Tests effectués avec de vrais numéros de téléphone
  • ✓ Prêt pour la production !

Obtenir de l'aide

Besoin d'assistance pour votre intégration ?

Conclusion

Intégrer le SMS dans votre application en RDC est simple grâce à l'API conviviale de DRCNotify. Que vous développiez une application fintech, une plateforme e-commerce ou tout service nécessitant une messagerie fiable, notre API fournit les outils dont vous avez besoin. Commencez avec notre essai gratuit et intégrez le SMS dans votre application en quelques minutes.

Commencez à développer avec notre API SMS

Obtenez vos identifiants API et des crédits SMS gratuits pour commencer le développement dès aujourd'hui.