Il s'agit d'une bibliothèque PHP permettant d'interagir avec la version 3.0 de l'API de MailChimp
Cette bibliothèque suppose une compréhension de base de l'application MailChimp et de ses fonctions associées.
Pour Composer, exécutez :
composer require jhut89/mailchimp3php
Vous pouvez également ajouter une ligne require à vos projets composer.json
pour le package jhut89/mailchimp3php
.
Ensuite, exécutez composer update
et ajoutez le chargeur automatique composer à votre projet avec :
require " vendor/autoload.php " ;
Vous pouvez ensuite utiliser une instruction use pour extraire la classe Mailchimp :
use MailchimpAPI Mailchimp ;
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
Pour instancier, vous aurez besoin d'une nouvelle instance de la classe Mailchimp
avec la clé API de votre compte MailChimp comme seul argument.
Si vous utilisez OAuth pour obtenir un jeton d'accès, cette bibliothèque peut gérer la « poignée de main » pour vous.
Vous devez d'abord envoyer l'utilisateur vers vos applications authorize_uri
. Vous pouvez obtenir cette URL en appelant Mailchimp::getAuthUrl()
de manière statique :
$ client_id = ' 12345676543 ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
Mailchimp:: getAuthUrl ( $ client_id , $ redirect_url );
Facultativement, si vous devez transmettre des informations d'état avec votre demande afin que la réponse de rappel puisse être acheminée correctement, vous pouvez inclure un paramètre d'état :
$ client_id = ' 12345676543 ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
// state information encoded into a string to be included in the URL, for example data encoded in a JWT token
$ state = ' eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ' ;
Mailchimp:: getAuthUrl ( $ client_id , $ redirect_url , $ state );
À partir de là, l'utilisateur saisira son nom d'utilisateur et son mot de passe pour approuver votre candidature et sera redirigé vers le redirect_uri
que vous avez défini avec un code
.
Avec ce code
vous pouvez désormais demander un jeton d'accès à mailchimp. Pour cela, vous devrez appeler la méthode Mailchimp::oauthExchange()
de manière statique comme ceci :
$ code = ' abc123abc123abc123abc123 ' ;
$ client_id = ' 12345676543 ' ;
$ client_secret = ' 789xyz789xyz789xyz789xyz ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
Mailchimp:: oauthExchange ( $ code , $ client_id , $ client_secret , $ redirect_url );
Si la négociation réussit, cette méthode renverra une chaîne contenant votre clé API comme celle-ci : 123abc123abc123abc123abc123abc-us0
. Cette clé API peut désormais être utilisée pour instancier votre classe Mailchimp
comme nous l'avons fait ci-dessus.
Une fois que vous avez instancié la classe Mailchimp
, vous pouvez commencer à créer des requêtes. La construction des requêtes se fait en « chaînant » les méthodes à l'instance $mailchimp
. Dans la plupart des cas, cette « chaîne » se terminera par le verbe HTTP correspondant à votre requête.
Un exemple de comment récupérer une collection de listes :
$ mailchimp
-> lists ()
-> get ();
La récupération d'une instance peut être effectuée en donnant un identifiant unique pour l'instance souhaitée comme argument à la méthode appropriée. Par exemple, si je voulais récupérer une instance de liste à partir de l'exemple ci-dessus, je passerais simplement un list_id
, comme seul argument de la méthode lists()
. Comme ça:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> get ();
Les méthodes disponibles pour chaque position de la chaîne dépendent de ce que renvoie la méthode précédente. Par exemple, si je voulais récupérer des abonnés à partir d'une liste de mon compte, je ferais :
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> get ();
Notez que j'ai fourni un list_id
à la méthode lists()
, car il n'y aurait aucun moyen de récupérer une liste d'abonnés à partir d'une collection de listes. Cependant, la requête ci-dessus ne renverra que 10 instances d'abonnés de la collection des membres. En effet, l'API de MailChimp utilise une pagination (documentée ICI) qui est par défaut count=10
et offset=0
. Cette bibliothèque vous permet de modifier les paramètres de la chaîne de requête en les passant comme argument à la méthode GET()
. Nous faisons cela en fournissant un tableau de paires clé-valeur où les clés sont le paramètre de requête que vous souhaitez fournir/modifier et sa valeur est la valeur du paramètre. A titre d'exemple, si je voulais récupérer les 100 seconds abonnés de ma liste, je pourrais :
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> get ([
" count " => " 100 " ,
" offset " => " 100 "
]);
Cela équivaudrait à faire une requête get contre :
Https://us0.api.mailchimp.com/3.0/lists/1a2b3c4d/members?count=100&offset=100
En allant un peu plus loin, nous pouvons récupérer un seul membre de la liste en donnant le members_hash
(hachage md5 de l'adresse minuscule) à la méthode members()
. Comme ça:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' 8bdbf060209f35b52087992a3cbdf4d7 ' )
-> get ();
Alternativement, au lieu de fournir un hachage md5 comme identifiant à la fonction members()
vous pouvez fournir l'adresse e-mail d'un contact sous forme de chaîne et cette bibliothèque effectuera le hachage pour vous. Comme ça:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' [email protected] ' )
-> get ();
Vous pouvez en savoir plus sur les requêtes
GET
ici : https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Get-Requests
Bien qu'il soit formidable de pouvoir récupérer des données de votre compte, nous devons également pouvoir publier de nouvelles données. Cela peut être fait en appelant la méthode POST()
à la fin d'une chaîne. À titre d'exemple, l'abonnement d'une adresse à une liste ressemblerait à ceci :
$ post_params = [
' email_address ' => ' [email protected] ' ,
' status ' => ' subscribed '
];
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> post ( $ post_params );
Dans ce cas, je ne fournirais pas d'identifiant à members()
car je souhaite publier dans sa collection. Notez également que les données de publication sont un tableau de paires clé-valeur représentant les paramètres que je souhaite transmettre à l'API MailChimp. Assurez-vous de fournir tous les champs obligatoires pour le point de terminaison sur lequel vous publiez. Consultez la documentation de MailChimp pour connaître les paramètres requis. Les paramètres non obligatoires peuvent simplement être ajoutés aux données de publication, et MailChimp ignorera ceux qui sont inutilisables. Pour illustrer, voici un exemple d'ajout d'un abonné à une liste avec certains paramètres non obligatoires :
$ merge_values = [
" FNAME " => " John " ,
" LNAME " => " Doe "
];
$ post_params = [
" email_address " => " [email protected] " ,
" status " => " subscribed " ,
" email_type " => " html " ,
" merge_fields " => $ merge_values
]
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> post ( $ post_params );
Vous pouvez en savoir plus sur les requêtes
POST
ici : https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Post-Requests
Cette bibliothèque gère les requêtes PUT et PATCH similaires à celles des requêtes POST. Cela signifie que PUT()
et PATCH()
acceptent tous deux un tableau de paires clé-valeur qui représentent les données que vous souhaitez modifier/fournir à MailChimp. A titre d'exemple, si je patchais l'abonné auquel nous nous sommes abonnés ci-dessus, pour avoir un nouveau prénom, cela ressemblerait à ceci.
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' a1167f5be2df7113beb69c95ebcdb2fd ' )
-> patch ([
" merge_fields " => [ " FNAME " => " Jane " ]
]);
Vous pouvez en savoir plus sur les requêtes
PATCH
&PUT
ici : https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Patch-&-Put-Requests
La suppression d'un enregistrement de MailChimp est effectuée avec la méthode DELETE()
et est construite de manière similaire aux requêtes GET. Si je voulais supprimer l'abonné ci-dessus, je ferais :
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' a1167f5be2df7113beb69c95ebcdb2fd ' )
-> delete ();
Vous pouvez en savoir plus sur les requêtes
DELETE
ici : https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Delete-Requests
Les méthodes nommées pour les verbes http tels que get()
, post()
, patch()
, put()
ou delete()
lancent une requête par fil à l'API de MailChimp. En cas de requête réussie, ces méthodes renvoient une instance de MailchimpResponse
. Je vous suggère de vous familiariser avec cette classe car il existe un certain nombre de modificateurs et de getters pour différents éléments d'une réponse.
Il existe un certain nombre de getters que nous pouvons utiliser pour interagir avec des éléments de notre instance MailchimpResponse
. Certains des plus couramment utilisés sont :
$ response -> deserialize (); // returns a deserialized (to php object) resource returned by API
$ response -> getHttpCode (); // returns an integer representation of the HTTP response code
$ response -> getHeaders (); // returns response headers as an array of key => value pairs
$ response -> getBody (); // return the raw text body of the response
A titre d'exemple, si je possède une clé API mais que je souhaite que l'e-mail de contact soit associé à son compte :
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
$ account = $ mailchimp
-> account ()
-> get ()
$ contact_email = $ account
-> deserialize ()
->email
print $ contact_email ; // outputs something like "[email protected]"
Vous pouvez découvrir comment travailler en profondeur avec les réponses ici : https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Handling-A-Response
mailchimp()
|
|----account()
|
|----apps()
|
|----automations()
| |
| |----removedSubscribers()
| |----emails()
| |
| |---queue()*
| |---pauseAll()*
| |---startAll()*
|
|----batches()
|
|----batchWebhooks()
|
|----campaignFolders()
|
|----campaigns()
| |
| |----cancel()*
| |----pause()*
| |----replicate()*
| |----resume()*
| |----scedule()*
| |----send()*
| |----test()*
| |----unschedule()*
| |----checklist()
| |----feedback()
| |----content()
|
|----connectedSites()
| |
| |----verifyScriptInstallation()*
|
|----conversations()
| |
| |----messages()
|
|----ecommStores()
| |
| |----customers()
| |----products()
| | |
| | |----variants()
| | |----images()
| |
| |----promoRules()
| | |
| | |----promoCodes()
| |
| |----orders()
| | |
| | |----lines()
| |
| |----carts()
| |
| |----lines()
|
|----facebookAds()
|
|----fileManagerFiles()
|
|----fileManagerFolders()
|
|----googleAds()
|
|----landingPages()
| |
| |----publish()*
| |----unpublish()*
| |----content()
|
|----lists()
| |
| |----batchSubscribe()*
| |----webhooks()
| |----signupForms()
| |----mergeFields()
| |----growthHistory()
| |----clients()
| |----activity()
| |----abuseReports()
| |----segments()
| | |
| | |----batch()*
| | |----members()
| |
| |----members()
| | |
| | |---notes()
| | |---goals()
| | |---activity()
| | |---tags()
| |
| |----interestCategories()
| |
| |----interests()
|
|----ping()
|
|----reports()
| |
| |----unsubscribes()
| |----subReports()
| |----sentTo()
| |----locations()
| |----emailActivity()
| |----googleAnalytics()
| |----openDetails()
| |----eepurl()
| |----domainPerformance()
| |----advice()
| |----abuse()
| |----clickReports()
| |
| |----members()
|
|----searchCampaigns()
|
|----searchMembers()
|
|----templateFolders()
|
|----templates()
| |
| |----defaultContent()
|
|----verifiedDomains()
|
|----verify()
*Veuillez consulter la documentation de l'API de MailChimp pour savoir quels verbes sont appropriés et où.
** Les méthodes marquées d'un *
font une requête réseau
**Veuillez surveiller les mises à jour et n'hésitez pas à faire une Fork ou une Pull Request. Consultez le Wiki pour un peu plus d'informations sur la contribution.