Official PHP SDK for the SMS Proxima API — send SMS, track delivery receipts and manage blacklists

Maintainers

Package info

github.com/SMS-Proxima/sms-proxima-php-sdk

Homepage

pkg:composer/sms-proxima/sdk

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-03-03 09:49 UTC

This package is auto-updated.

Last update: 2026-03-03 10:36:33 UTC


README

SDK PHP officiel pour l'API SMS Proxima.

Installation

composer require sms-proxima/sdk

Prérequis : PHP >= 7.4, extensions curl et json.

Démarrage rapide

use SmsProxima\SmsProxima;

$sms = new SmsProxima('VOTRE_TOKEN');

// Envoyer un SMS
$result = $sms->send('33612345678', 'BOUTIQUE', 'Votre commande est confirmée.');

echo $result['ticket'];  // api-42-1712345678
echo $result['credits']; // crédits restants

Utilisation

Test de connexion

$response = $sms->ping();
// ['message' => 'Authentifié avec succès', 'user' => [...]]

Crédits disponibles

$credits = $sms->credits(); // int

Envoi SMS

// Envoi simple
$sms->send('33612345678', 'EXPEDITEUR', 'Votre message');

// Envoi multiple
$sms->send(['33612345678', '33687654321'], 'EXPEDITEUR', 'Votre message');

// Avec options
$sms->send('33612345678', 'EXPEDITEUR', 'Votre message', [
    'stop'           => 1,              // Mention STOP (défaut : 1)
    'timeToSend'     => '2026-03-15 10:00', // Envoi programmé
    'sandbox'        => 1,              // Mode test (aucun SMS envoyé, aucun crédit débité)
    'idempotencyKey' => 'uuid-v4-ici',  // Anti double-envoi
]);

Comptage de caractères

$count = $sms->count('Mon message');
// ['nb_sms' => 1, 'nb_caracteres' => 147]

Historique des campagnes

$campaigns = $sms->campaigns();
$campaigns = $sms->campaigns(2); // page 2

Accusés de réception par destinataire

$deliveries = $sms->deliveries('api-42-1712345678');
// Retourne la liste paginée des AR reçus pour ce ticket

Blacklist

// Lister
$list = $sms->getBlacklist();

// Ajouter
$sms->addToBlacklist('33612345678');

// Supprimer (impossible si le numéro a répondu STOP)
$sms->removeFromBlacklist('33612345678');

Gestion des erreurs

use SmsProxima\SmsProxima;
use SmsProxima\Exceptions\AuthenticationException;
use SmsProxima\Exceptions\InsufficientCreditsException;
use SmsProxima\Exceptions\ValidationException;
use SmsProxima\Exceptions\SmsProximaException;

try {
    $result = $sms->send('33612345678', 'BOUTIQUE', 'Votre commande est confirmée.');

} catch (InsufficientCreditsException $e) {
    echo 'Crédits insuffisants. Disponibles : ' . $e->getAvailableCredits();
    echo ' / Requis : ' . $e->getRequiredCredits();

} catch (AuthenticationException $e) {
    echo 'Clé API invalide ou compte non validé.';

} catch (ValidationException $e) {
    echo 'Erreur de validation : ' . $e->getMessage();
    print_r($e->getErrors());

} catch (SmsProximaException $e) {
    echo 'Erreur API : ' . $e->getMessage();
    echo ' (code : ' . $e->getApiCode() . ')';
}

Webhook — accusés de réception

Configurez votre URL webhook depuis votre espace API. SMS Proxima enverra un POST JSON sur votre endpoint à chaque accusé de réception.

Exemple de payload reçu :

{
  "version": "v1",
  "event": "delivery.receipt",
  "event_id": "1711175235",
  "emitted_at": "2026-03-01T10:00:00+00:00",
  "campaign_id": 1234,
  "message": {
    "to": "33612345678"
  },
  "delivery": {
    "status": "delivered",
    "status_code": "0",
    "error_code": "000",
    "received_at": "2026-03-01T09:59:55+00:00"
  }
}

Votre endpoint doit répondre HTTP 2xx dans les 6 secondes. En cas d'échec, la requête est rejouée jusqu'à 8 fois sur 24h. Utilisez event_id pour détecter les doublons éventuels.

Licence

MIT — voir LICENSE