Introduction

Bienvenue dans la documentation officielle de notre API SMS, un outil puissant et flexible conçu pour transformer la manière dont vous communiquez avec vos utilisateurs. Que vous gériez des notifications transactionnelles, des rappels automatisés, ou des campagnes marketing à grande échelle, notre API REST offre une solution robuste et fiable pour intégrer la messagerie SMS directement dans vos applications.

Dans un monde de plus en plus connecté, où les utilisateurs sont constamment en mouvement, les SMS restent un canal de communication essentiel. Le taux d'ouverture des SMS atteint 98 %, et 90 % des messages sont lus dans les trois premières minutes suivant leur réception. Cette rapidité et cette efficacité font des SMS un moyen incontournable de transmettre des informations importantes, des alertes et des offres marketing. Grâce à notre API SMS, vous pouvez tirer parti de cette opportunité pour optimiser votre relation client et vos processus internes.

L'intégration de notre API est pensée pour être rapide, intuitive, et accessible à tous les développeurs, quels que soient leurs langages de prédilection. Nous offrons des bibliothèques et des exemples de code dans une multitude de langages, incluant PHP, Python, JavaScript, Java, et bien d'autres encore. Que vous soyez en phase de prototypage d'une nouvelle fonctionnalité ou que vous gériez une application en production, notre API s'intègre en quelques minutes avec des requêtes HTTP simples.

L'API repose sur le standards GET pour interagir avec nos services. Les réponses sont fournies en format JSON, un format largement utilisé et facilement manipulable dans tous les langages de programmation. Nous avons également mis en place une documentation détaillée, claire, et complète pour vous guider à chaque étape de l'intégration.

Cette API s'adapte à des cas d'utilisation divers, allant des notifications transactionnelles aux alertes de sécurité, en passant par les campagnes marketing de grande envergure. Nous vous invitons à explorer les sections suivantes pour découvrir en détail toutes les fonctionnalités offertes par notre API.

Authentification

L'accès aux services de notre API SMS est sécurisé par une authentification via la méthode Basic Auth, garantissant que seuls les utilisateurs autorisés puissent interagir avec les différents points de terminaison API. Cette authentification repose sur la combinaison d'un Token et d'une Clé API pour s'assurer que chaque requête provient d'une source fiable et vérifiée.

En utilisant une connexion sécurisée (HTTPS), les informations d'authentification sont chiffrée, offrant une protection maximale contre les accès non autorisés et les tentatives d'interception.

Étapes de l'authentification

L'authentification fonctionne en plusieurs étapes :

  1. Récupération de la clé API : Connectez-vous à votre compte sur le tableau de bord de notre plateforme et accédez à la section "Clé API". Vous obtiendrez un identifiant unique et une clé API spécifique à votre compte.
  2. Génération du token : Le token d'authentification est généré en encodant en Base64 l'identifiant utilisateur et la clé API séparés par un double point `:`, formant ainsi un jeton d'authentification Basic.
  3. Inclusion dans la requête : Ajoutez le jeton généré dans l'en-tête `Authorization` de chaque requête, comme suit : `Authorization: Basic {token}`.
  4. Requête sécurisée : Toutes les requêtes API doivent être envoyées via une connexion HTTPS pour garantir que vos données sont transmises en toute sécurité.

Exemple d'en-tête d'authentification

GET /api/send_sms.php HTTP/1.1
Host: sms.ligdicash.io
Authorization: Basic VU9UUkVfQVBJX0tFWTpWT1RSRV9UT0tFTg==  
Content-Type: application/json

En cas d'erreur, il est conseillé de vérifier votre token d'authentification et de consulter la documentation ou contacter notre support technique pour résoudre tout problème lié à l'authentification.

Envoi de SMS

L'envoi de SMS via notre API est une fonctionnalité clé qui permet aux utilisateurs de communiquer avec leurs clients de manière rapide et efficace. Grâce à une intégration simple utilisant des requêtes HTTP.

Structure de la requête GET

Endpoint GET

API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TO="226xxxxxxx"
TEXT="Hello Ligdicash"

curl -X GET "https://sms.ligdicash.io/api/send_sms.php?api_key=$API_KEY&token=$TOKEN&to=$TO&text=$(echo $TEXT | sed 's/ /%20/g')" \
     -H "Accept: application/json"

Réponse de succès

Exemple de réponse réussie

Array
(
    [success] => 100
    [timestamp] => 2025-01-12T00:55:44+00:00
    [request_id] => SMS_1736643344_678313100f7a56.05321104
    [data] => Array
        (
            [message_id] => MSG_1736643344_6783131093bd1
            [recipient] => 226xxxxxx
            [sender] => SenderName
            [remaining_balance] => 85
            [sent_at] => 2025-01-12T00:55:44+00:00
            [status] => delivered
            [message] => Hello Ligdicash
            [message_info] => Array
                (
                    [length] => 25
                    [encoding] => UTF-8
                    [parts] => 1
                )
        )
)

Gestion des erreurs

Codes d'erreur

L'API utilise des codes d'erreur standardisés pour faciliter le débogage et la gestion des erreurs.

Code Constante Message Description
1001 AUTH_RATE_LIMIT Rate limit exceeded La limite de requêtes erronées autorisées a été dépassée.
1002 AUTH_INVALID Invalid credentials La clé API ou le token est invalide ou manquant.
1003 INVALID_PARAMS Invalid parameters Les paramètres de la requête sont manquants ou invalides.
1004 INSUFFICIENT_BALANCE Insufficient SMS balance Le solde SMS est insuffisant pour effectuer l'envoi.
1005 SMS_SEND_FAILED SMS sending failed L'envoi du SMS a échoué pour une raison technique.
1006 INVALID_PHONE Invalid phone number format Le numéro de téléphone fourni est dans un format invalide.
5000 SYSTEM_ERROR Internal system error Une erreur interne du système s'est produite.

Exemples de réponses d'erreur

{
    "success": false,
    "error": {
        "code": 1002,
        "message": "Invalid credentials",
        "detail": "The provided API key or token is invalid."
    }
}
{
    "success": false,
    "error": {
        "code": 5000,
        "message": "Internal system error",
        "detail": "An unexpected error occurred. Please try again later."
    }
}

Code

Exemples de code pour intégrer l'API dans différents langages de programmation.

curl -X GET "https://sms.ligdicash.io/api/send_sms.php?api_key=xxxxxxxxxxxxxxxx&token=xxxxxxxxxxxxxxxxxxxxxxxxxx&to=226xxxxxx&text=Hello" \
-H "Content-Type: application/x-www-form-urlencoded"
// Paramètres d'authentification
$credentials = [
   'api_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
   'token' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
];

// Configuration du SMS
$sms = [
   'to' => '226xxxxxxxxx',
   'text' => 'Test message' // Votre message
];

function sendSMS($credentials, $sms) {
   // Construction de l'URL avec les paramètres
   $url = 'https://sms.ligdicash.io/api/send_sms.php?' . http_build_query([
       'api_key' => $credentials['api_key'],
       'token' => $credentials['token'],
       'to' => $sms['to'],
       'text' => $sms['text']
   ]);

   try {
       // Configuration de cURL
       $ch = curl_init();
       curl_setopt_array($ch, [
           CURLOPT_URL => $url,
           CURLOPT_RETURNTRANSFER => true,
           CURLOPT_TIMEOUT => 30,
           CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
           CURLOPT_CUSTOMREQUEST => 'GET',
           CURLOPT_HTTPHEADER => [
               'Accept: application/json'
           ]
       ]);

       // Exécution de la requête
       $response = curl_exec($ch);
       $err = curl_error($ch);
       $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

       // Fermeture de la connexion cURL
       curl_close($ch);

       // Gestion des erreurs
       if ($err) {
           throw new Exception("Erreur cURL : " . $err);
       }

       // Décodage de la réponse JSON
       $result = json_decode($response, true);
       
       return [
           'http_code' => $httpCode,
           'response' => $result
       ];

   } catch (Exception $e) {
       return [
           'status' => 'error',
           'message' => $e->getMessage()
       ];
   }
}

// Test d'envoi
$result = sendSMS($credentials, $sms);
print_r($result);
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;

public class SMSApi {
    private static final String BASE_URL = "https://sms.ligdicash.io/api/send_sms.php";

    public static class SMSResponse {
        public final String status;
        public final int httpCode;
        public final String response;

        public SMSResponse(String status, int httpCode, String response) {
            this.status = status;
            this.httpCode = httpCode;
            this.response = response;
        }

        @Override
        public String toString() {
            return String.format("SMSResponse{status='%s', httpCode=%d, response='%s'}", 
                status, httpCode, response);
        }
    }

    private static void disableSSLVerification() {
        try {
            TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    public X509Certificate[] getAcceptedIssuers() { return null; }
                    public void checkClientTrusted(X509Certificate[] certs, String authType) { }
                    public void checkServerTrusted(X509Certificate[] certs, String authType) { }
                }
            };

            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SMSResponse sendSMS(Map credentials, Map sms) {
        try {
            // Construction des paramètres
            StringJoiner params = new StringJoiner("&");
            params.add("api_key=" + URLEncoder.encode(credentials.get("api_key"), StandardCharsets.UTF_8.toString()));
            params.add("token=" + URLEncoder.encode(credentials.get("token"), StandardCharsets.UTF_8.toString()));
            params.add("to=" + URLEncoder.encode(sms.get("to"), StandardCharsets.UTF_8.toString()));
            params.add("text=" + URLEncoder.encode(sms.get("text"), StandardCharsets.UTF_8.toString()));

            // Construction de l'URL complète
            String urlString = BASE_URL + "?" + params.toString();
            URL url = new URL(urlString);

            // Désactive la vérification SSL pour le test
            disableSSLVerification();

            // Configuration de la connexion
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);

            // Lecture de la réponse
            int responseCode = conn.getResponseCode();
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            return new SMSResponse("success", responseCode, response.toString());

        } catch (Exception e) {
            return new SMSResponse("error", 500, e.getMessage());
        }
    }

    public static void main(String[] args) {
        // Paramètres d'authentification
        Map credentials = new HashMap<>();
        credentials.put("api_key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
        credentials.put("token", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

        // Configuration du SMS
        Map sms = new HashMap<>();
        sms.put("to", "226xxxxxxxxxxx");
        sms.put("text", "Test message");

        // Test d'envoi
        SMSResponse result = sendSMS(credentials, sms);
        System.out.println(result);
    }
}
import requests
from urllib.parse import urlencode

def send_sms(credentials, sms):
    # Construction des paramètres
    params = {
        'api_key': credentials['api_key'],
        'token': credentials['token'],
        'to': sms['to'],
        'text': sms['text']
    }
    
    # URL de base
    base_url = 'https://sms.ligdicash.io/api/send_sms.php'
    
    # Construction de l'URL complète avec les paramètres
    url = f"{base_url}?{urlencode(params)}"
    
    try:
        # Configuration des headers
        headers = {
            'Accept': 'application/json'
        }
        
        # Envoi de la requête GET
        response = requests.get(
            url,
            headers=headers,
            timeout=30,
            verify=False  # Désactive la vérification SSL pour le test
        )
        
        # Vérification du statut de la réponse
        response.raise_for_status()
        
        # Retourne la réponse en format JSON
        return {
            'status': 'success',
            'http_code': response.status_code,
            'response': response.json()
        }
        
    except requests.exceptions.RequestException as e:
        return {
            'status': 'error',
            'message': str(e)
        }

# Test de la fonction
if __name__ == "__main__":
    # Paramètres d'authentification
    credentials = {
        'api_key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'token': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    }
    
    # Configuration du SMS
    sms = {
        'to': '226xxxxxxxxx',
        'text': 'Test message'
    }
    
    # Envoi du SMS
    result = send_sms(credentials, sms)
    print(result)
const axios = require('axios');
const querystring = require('querystring');

async function sendSMS(credentials, sms) {
    // Construction des paramètres
    const params = {
        api_key: credentials.api_key,
        token: credentials.token,
        to: sms.to,
        text: sms.text
    };

    // URL de base
    const baseUrl = 'https://sms.ligdicash.io/api/send_sms.php';
    
    // Construction de l'URL complète
    const url = `${baseUrl}?${querystring.stringify(params)}`;

    try {
        // Configuration de la requête
        const config = {
            headers: {
                'Accept': 'application/json'
            },
            timeout: 30000,
            httpsAgent: new require('https').Agent({  
                rejectUnauthorized: false // Désactive la vérification SSL pour le test
            })
        };

        // Envoi de la requête GET
        const response = await axios.get(url, config);

        return {
            status: 'success',
            http_code: response.status,
            response: response.data
        };

    } catch (error) {
        return {
            status: 'error',
            message: error.message,
            details: error.response?.data
        };
    }
}

// Test de la fonction
const credentials = {
    api_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
};

const sms = {
    to: '226xxxxxxxxx',
    text: 'Test message'
};

// Utilisation avec async/await
(async () => {
    try {
        const result = await sendSMS(credentials, sms);
        console.log(result);
    } catch (error) {
        console.error('Error:', error);
    }
})();

Intégration de l'API

Cette section présente les différentes méthodes d'intégration de l'API SMS Ligdicash dans vos applications.

Intégration directe

L'API peut être intégrée directement dans votre application en utilisant les exemples de code fournis dans la section précédente. Cette méthode offre un contrôle total sur le processus d'envoi et de réception des SMS.

Support technique

Si vous rencontrez des difficultés lors de l'intégration de notre API, n'hésitez pas à contacter notre équipe de support technique à l'adresse support@ligdicash.io ou via le chat intégré à notre plateforme.