Download the PHP package senndo/senndo-php without Composer

On this page you can find all versions of the php package senndo/senndo-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package senndo-php

senndo — SDK PHP officiel

Messagerie multicanale et vérification : SMS, WhatsApp, e-mail, voix, OTP. Une seule API, un seul solde, un verdict de livraison par message.

PHP ≥ 8.1, extensions curl et json. Aucune dépendance Composer.


Premier envoi

sendMessage rend l'état au moment de l'acceptation, pas le verdict final. Un sent dit que l'opérateur a pris le message ; il ne dit pas qu'il est arrivé. Le verdict se lit sur un webhook, ou en relisant le message.


La clé d'idempotence : le SDK n'en fabrique pas à votre place

idempotencyKey est obligatoire sur tout envoi, et c'est délibéré. Rejouer la même clé renvoie le message déjà créé — sans jamais redébiter le compte.

Le SDK n'en pose jamais une pour vous. Une clé inventée au moment de l'appel serait perdue si le processus meurt entre l'envoi et la réponse : exactement le cas où l'idempotence sert. La bonne clé vient de votre domaine.

Http::newIdempotencyKey() existe pour les cas où il n'y a vraiment rien à dériver — un envoi manuel depuis un script, un test :


Les erreurs se branchent sur une classe, jamais sur un message

$erreur->errorCode est stable ; $erreur->apiMessage est un libellé humain qui évolue. Ne branchez jamais sur le second.

Pourquoi errorCode et non code. Exception::$code existe déjà en PHP, il est de type int et il n'est pas en lecture seule : le redéclarer en string est refusé par le moteur. C'est la seule asymétrie de nommage entre les SDK TypeScript, Python et PHP, et elle est imposée par le langage.

Le code d'échec d'un message est en union ouverte : senndo ajoute des valeurs, n'en retire pas.


Les montants sont des chaînes décimales

Un NUMERIC(18,6) passé par un flottant perd des unités sur les longues traînes, et un prix unitaire sub-centime arrondi à deux décimales devient zéro. Le SDK ne convertit rien : les montants arrivent en string et se somment avec bcadd.


Retentatives : ce qui est rejoué, et ce qui ne l'est jamais

Le SDK retente uniquement ce qui peut l'être sans conséquence :

Appel Retenté ?
GET, DELETE oui — sur échec de transport, 429, 5xx
sendMessage (porte une clé d'idempotence) oui
createWebhook, estimateMessage, revokeWebhook jamais
tout 4xx autre que 429 jamais

createWebhook crée une ressource à chaque exécution : une retentative aveugle produirait deux endpoints, donc deux livraisons pour chaque événement.


Téléverser un média


Brancher votre propre client HTTP

Le transport par défaut est cURL — zéro dépendance. Un projet qui a déjà Guzzle, Symfony HttpClient, un proxy d'entreprise ou du mTLS injecte le sien, et garde la validation, les erreurs typées et la politique de retentative.

Le transport doit lever TimeoutException sur dépassement de délai et ConnectionException sur échec de transport, et ne jamais lever sur un statut d'erreur HTTP — sinon le code stable de l'enveloppe est perdu.


La clé API ne s'imprime pas

Il n'existe aucun accesseur qui rende la clé en clair, et __debugInfo masque également : un var_dump ou un dumper de framework ne peut pas la révéler.


Webhooks

Le secret n'est lisible qu'à la création. Il signe chaque livraison : vérifiez la signature avant de faire quoi que ce soit du corps.


Licence

MIT. Voir CHANGELOG.md pour les changements de version.


All versions of senndo-php with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
ext-curl Version *
ext-json Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package senndo/senndo-php contains the following files

Loading the files please wait ...