Package Laravel

Envoyer des SMS et des codes OTP depuis Laravel au Maroc

envoisms/laravel-otp est le package Laravel officiel d'EnvoiSMS.ma : un canal de notification et une façade pour envoyer des SMS et des codes OTP, construit sur le SDK PHP envoisms/envoisms-php. Une commande Composer, deux variables dans .env, et vos notifications Laravel partent en SMS.

composer require envoisms/laravel-otp
# 1. Installer le package officiel composer require envoisms/laravel-otp # 2. .env ENVOISMS_API_KEY=your_api_key_here ENVOISMS_FROM=MonBusiness # 3. (optionnel) config/services.php 'envoisms' => [ 'api_key' => env('ENVOISMS_API_KEY'), 'from' => env('ENVOISMS_FROM', 'EnvoiSMS'), ],
● Routes locales MarocIAM • Inwi • Orange
https://api.envoisms.ma/v1
Routes locales
Maroc Telecom (IAM) • Inwi • Orange
Accusés réels DLR
Signatures HMAC-SHA256
Tarifs clairs en MAD
dès 0,60 MAD/SMS • 5 MAD offerts

Installation et configuration

Installez le package avec composer require envoisms/laravel-otp, puis ajoutez votre clé API et votre expéditeur par défaut dans .env. La configuration peut aussi vivre dans config/services.php, sous la clé envoisms.

  • ENVOISMS_API_KEY=votre_cle_api
  • ENVOISMS_FROM=MonBusiness (votre Sender ID validé)
  • config/services.php : 'envoisms' => ['api_key' => env('ENVOISMS_API_KEY'), 'from' => env('ENVOISMS_FROM', 'EnvoiSMS')]

Un canal de notification Laravel

Votre notification déclare EnvoiSMSChannel::class dans via() et construit un EnvoiSMSMessage dans toEnvoiSMS(). Pour un code à usage unique : ->asOtp(brand: 'MonApp', codeLength: 6, expiry: 600). Le destinataire est tout modèle qui a un attribut phone ou une méthode routeNotificationForEnvoiSMS() ; l'envoi reste un simple $user->notify(new SendOtpNotification()).

  • use EnvoiSMS\Laravel\EnvoiSMSChannel;
  • use EnvoiSMS\Laravel\Messages\EnvoiSMSMessage;
  • Chaque envoi porte un Idempotency-Key (du SDK PHP) : une notification en file d'attente rejouée ne facture jamais deux fois

Notifications texte : commandes, rappels, alertes

Pour un statut de commande ou un rappel, ->content("Bonjour …, votre commande #… est expédiée.")->from('MonBusiness'). Le canal par défaut est le SMS, et c'est le bon choix pour tout texte ordinaire, même à un client qui utilise WhatsApp. ->channel('whatsapp') envoie depuis votre propre numéro WhatsApp Business connecté : sans numéro, l'API répond 403 WHATSAPP_NOT_CONNECTED ; un texte libre hors de la fenêtre de 24 heures répond 400 OUT_OF_24H_WINDOW. Rien n'est facturé dans les deux cas.

  • ->from() accepte un Sender ID validé ; omettez-le pour l'expéditeur par défaut du compte
  • Un code OTP sur WhatsApp : ->asOtp(...)->channel('whatsapp'), via l'expéditeur partagé d'EnvoiSMS, sans connexion

La façade : envoyer puis vérifier un OTP

Sans passer par une notification, la façade EnvoiSMS envoie le code et le vérifie. EnvoiSMS::sendOtp(['to' => '+212600000000', 'brand' => 'MonApp']) renvoie un session_id ; EnvoiSMS::checkOtp(sessionId: $response['session_id'], code: '123456') renvoie verified à true quand le code est bon. Le code est généré, envoyé et expiré côté EnvoiSMS : votre application ne le stocke jamais.

  • use EnvoiSMS\Laravel\Facades\EnvoiSMS;
  • Endpoints sous-jacents : POST /v1/verify/send et POST /v1/verify/check
  • Licence MIT, code source sur github.com/envoisms/laravel-otp

Tout savoir sur Package Laravel.

Quelle différence entre envoisms/laravel-otp et envoisms/envoisms-php ?
envoisms/envoisms-php est le SDK PHP, utilisable dans n'importe quel projet. envoisms/laravel-otp s'appuie dessus et ajoute ce qui est propre à Laravel : le canal de notification, le message EnvoiSMSMessage et la façade EnvoiSMS.
Puis-je mettre mes notifications SMS en file d'attente ?
Oui. Chaque envoi porte un Idempotency-Key fourni par le SDK PHP : si un job de notification est rejoué après un échec ou un timeout, le message n'est ni renvoyé ni facturé une seconde fois.
Comment envoyer un code OTP sur WhatsApp depuis Laravel ?
->asOtp(brand: 'MonApp')->channel('whatsapp'). Le code passe par l'expéditeur partagé d'EnvoiSMS : vous n'avez pas besoin de connecter votre propre numéro WhatsApp.
Comment tester sans envoyer de vrais SMS ?
Utilisez une clé sandbox env_test_ dans ENVOISMS_API_KEY : tout le parcours d'envoi est rejoué — validation, tarification, webhooks — sans rien livrer ni débiter.

Prêt à intégrer Package Laravel ?

Créez votre compte en moins de 2 minutes. Bénéficiez immédiatement de 5 MAD de crédit gratuit pour tester l'API.