Wrapper super simple et à abstraction minimale de l'API MailChimp v3, en PHP.
Je déteste les wrappers complexes. Cela vous permet d'accéder au code aussi directement que possible à partir de la documentation de l'API MailChimp.
Nécessite PHP 5.3 et un pulse. L'abstraction est pour les chimpanzés.
Vous pouvez installer mailchimp-api à l'aide de Composer :
composer require drewm/mailchimp-api
Vous devrez alors :
exécutez composer install
pour ajouter ces dépendances à votre répertoire de fournisseurs
ajoutez l'autoloader à votre application avec cette ligne : require("vendor/autoload.php")
Alternativement, vous pouvez simplement télécharger le fichier MailChimp.php
et l'inclure manuellement :
include('./MailChimp.php');
Si vous souhaitez utiliser les interfaces de requête par lots ou de webhook, vous devrez également télécharger et inclure les fichiers Batch.php
ou Webhook.php
:
include('./Batch.php'); include('./Webhook.php');
Ceux-ci sont facultatifs. Si vous n'utilisez pas de lots ou de webhooks, vous pouvez simplement les ignorer. Vous pourrez toujours revenir et les ajouter plus tard.
Commencez par use
-ing la classe et créez une instance avec votre clé API
utilisez DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
Ensuite, listez toutes les listes de diffusion (avec une méthode get
on the lists
)
$result = $MailChimp->get('lists');print_r($result);
Abonnez quelqu'un à une liste (avec une post
dans la méthode lists/{listID}/members
) :
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'abonné', ]);print_r($result);
Mettez à jour un membre de la liste avec plus d'informations (en utilisant patch
pour mettre à jour) :
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'Davy', 'LNAME'=>'Jones'], 'intérêts' => ['2s3a384h' => vrai], ]);print_r($result);
Supprimez un membre de la liste à l'aide de la méthode delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
Testez rapidement une action réussie avec la méthode success()
:
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'abonné', ]);if ($MailChimp->success()) { print_r($result); } else { echo $MailChimp->getLastError(); }
La fonctionnalité MailChimp Batch Operations vous permet d'effectuer plusieurs opérations avec un seul appel. Un bon exemple est l’ajout de milliers de membres à une liste – vous pouvez effectuer cela en une seule requête plutôt qu’en milliers.
utilisez DrewMMailChimpMailChimp;utilisez DrewMMailChimpBatch;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
Vous pouvez ensuite effectuer des requêtes sur l'objet Batch
comme vous le feriez normalement avec l'objet MailChimp
. La différence est que vous devez définir un identifiant pour l'opération comme premier argument et que vous n'obtiendrez pas de réponse. L'ID est utilisé pour rechercher le résultat de cette demande dans la réponse combinée de l'opération par lots.
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'abonné', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'abonné', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'abonné', ]);
Une fois que vous avez terminé toutes les requêtes qui devraient figurer dans le lot, vous devez l'exécuter.
$result = $Batch->execute();
Le résultat inclut un ID de lot. Ultérieurement, vous pourrez vérifier l'état de votre lot :
$MailChimp->new_batch($batch_id);$result = $Batch->check_status();
Lorsque votre lot est terminé, vous pouvez télécharger les résultats à partir de l'URL indiquée dans la réponse. Dans le JSON, le résultat de chaque opération sera saisi par l'ID que vous avez utilisé comme premier argument de la requête.
Remarque : L'utilisation de la fonctionnalité Webhooks nécessite au moins PHP 5.4.
Les webhooks MailChimp permettent à votre code d'être informé des modifications apportées aux listes et aux campagnes.
Lorsque vous configurez un webhook, vous spécifiez une URL sur votre serveur vers laquelle les données doivent être envoyées. La classe Webhook de ce wrapper vous aide à intercepter ce webhook entrant de manière ordonnée. Il utilise un modèle d'abonnement, votre code s'abonnant aux événements webhook qu'il souhaite écouter. Vous fournissez une fonction de rappel à laquelle les données du webhook sont transmises.
Pour écouter le webhook unsubscribe
:
utilisez DrewMMailChimpWebhook ; Webhook::subscribe('unsubscribe', function($data){ print_r($data); });
À première vue, l' abonnement/désabonnement semble déroutant : votre code s'abonne à l'événement webhook unsubscribe
de MailChimp. La fonction de rappel est passée sous forme d'argument unique : un tableau associatif contenant les données du webhook.
Si vous préférez simplement récupérer tous les webhooks et les gérer vous-même, vous pouvez utiliser :
utilisez DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
Il ne semble y avoir aucune documentation sur le contenu des données du webhook. Il est utile d'utiliser quelque chose comme ngrok pour tunneliser les webhooks vers votre machine de développement - vous pouvez ensuite utiliser son interface Web pour inspecter ce qui a été envoyé et relire les webhooks entrants pendant que vous déboguez votre code.
Pour obtenir la dernière erreur renvoyée soit par le client HTTP, soit par l'API, utilisez getLastError()
:
echo $MailChimp->getLastError();
Pour un débogage plus approfondi, vous pouvez inspecter les en-têtes et le corps de la réponse :
print_r($MailChimp->getLastResponse());
Si vous pensez que vous envoyez des données dans un mauvais format, vous pouvez consulter ce qui a été envoyé à MailChimp par le wrapper :
print_r($MailChimp->getLastRequest());
Si les certificats racine de l'autorité de certification de votre serveur ne sont pas à jour, vous constaterez peut-être que la vérification SSL échoue et vous n'obtiendrez pas de réponse. La solution de correction n’est pas de désactiver la vérification SSL. La solution est de mettre à jour vos certificats. Si vous ne pouvez pas faire cela, il y a une option en haut du fichier de classe. S'il vous plaît, ne vous contentez pas de l'éteindre sans au moins essayer de mettre à jour vos certificats - c'est paresseux et dangereux. Vous n'êtes pas un développeur paresseux et dangereux, n'est-ce pas ?
Si vous avez des questions de mise en œuvre de haut niveau sur votre projet (« Comment ajouter ceci à WordPress », « J'ai un formulaire qui prend une adresse e-mail... »), veuillez les adresser à un endroit comme StackOverflow . Si vous pensez avoir trouvé un bug ou si vous souhaitez discuter d'un changement ou d'une amélioration, n'hésitez pas à soulever un problème et nous trouverons une solution entre nous.
Il s'agit d'un wrapper assez simple, mais il a été amélioré grâce aux contributions de ceux qui l'utilisent. Si vous souhaitez suggérer une amélioration, veuillez soulever un problème pour en discuter avant de faire votre pull request.
Les demandes de tirage pour les bogues sont plus que bienvenues - veuillez expliquer le bogue que vous essayez de corriger dans le message.
Il existe un petit nombre de tests unitaires PHPUnit. Les tests unitaires sur une API sont évidemment un peu délicats, mais j'apprécierais toute contribution à ce sujet. Ce serait formidable d’avoir une plus grande couverture de tests.