Это PHP-библиотека для взаимодействия с API MailChimp версии 3.0.
Эта библиотека предполагает базовое понимание приложения MailChimp и связанных с ним функций.
Для запуска Composer:
composer require jhut89/mailchimp3php
В качестве альтернативы вы можете добавить строку require в свои проекты composer.json
для пакета jhut89/mailchimp3php
.
Затем запустите composer update
и добавьте автозагрузчик композитора в свой проект с помощью:
require " vendor/autoload.php " ;
Затем вы можете использовать оператор use для извлечения класса Mailchimp:
use MailchimpAPI Mailchimp ;
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
Для создания экземпляра вам понадобится новый экземпляр класса Mailchimp
с ключом API вашей учетной записи MailChimp в качестве единственного аргумента.
Если вы используете OAuth для получения токена доступа, эта библиотека может выполнить «рукопожатие» за вас.
Сначала вы должны отправить пользователя в свои authorize_uri
. Вы можете получить этот URL-адрес, статически вызвав Mailchimp::getAuthUrl()
:
$ client_id = ' 12345676543 ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
Mailchimp:: getAuthUrl ( $ client_id , $ redirect_url );
При желании, если вам нужно передать информацию о состоянии вместе с вашим запросом, чтобы ответ обратного вызова мог быть правильно маршрутизирован, вы можете включить параметр состояния:
$ 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 );
Оттуда пользователь введет свое имя пользователя и пароль, чтобы одобрить ваше приложение, и будет перенаправлен на redirect_uri
который вы установили вместе с code
.
С помощью этого code
вы теперь можете запросить токен доступа у mailchimp. Для этого вам нужно будет статически вызвать метод Mailchimp::oauthExchange()
следующим образом:
$ 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 );
Если рукопожатие прошло успешно, этот метод вернет строку, содержащую ваш ключ API, например: 123abc123abc123abc123abc123abc-us0
. Этот ключ API теперь можно использовать для создания экземпляра вашего класса Mailchimp
, как показано выше.
После создания экземпляра класса Mailchimp
вы можете приступить к созданию запросов. Построение запросов осуществляется путем «связывания» методов с экземпляром $mailchimp
. В большинстве случаев эта «цепочка» заканчивается HTTP-командой вашего запроса.
Пример того, как получить коллекцию списка:
$ mailchimp
-> lists ()
-> get ();
Получение экземпляра можно выполнить, указав уникальный идентификатор нужного экземпляра в качестве аргумента соответствующего метода. Например, если бы я хотел получить экземпляр списка из приведенного выше примера, я бы просто передал list_id
в качестве единственного аргумента метода lists()
. Так:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> get ();
Методы, доступные для каждой позиции в цепочке, зависят от того, что возвращает предыдущий метод. Например, если бы я хотел получить подписчиков из списка в моей учетной записи, я бы:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> get ();
Обратите внимание, что я предоставил list_id
методу lists()
, поскольку не было возможности получить список подписчиков из коллекции списков. Однако приведенный выше запрос вернет только 10 экземпляров подписчиков из коллекции участников. Это связано с тем, что API MailChimp использует нумерацию страниц (описанную ЗДЕСЬ), которая по умолчанию имеет значения count=10
и offset=0
. Эта библиотека позволяет изменять параметры строки запроса, передавая их в качестве аргумента методу GET()
. Мы делаем это, предоставляя массив пар ключ-значение, где ключи — это параметр запроса, который вы хотите предоставить/изменить, а его значение — это значение параметра. Например, если бы я хотел получить вторые 100 подписчиков из моего списка, я мог бы:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> get ([
" count " => " 100 " ,
" offset " => " 100 "
]);
Это было бы эквивалентно выполнению запроса на получение:
Https://us0.api.mailchimp.com/3.0/lists/1a2b3c4d/members?count=100&offset=100
Пройдя немного дальше, мы можем получить один элемент списка, members_hash
(хеш md5 адреса в нижнем регистре) members()
. Так:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' 8bdbf060209f35b52087992a3cbdf4d7 ' )
-> get ();
В качестве альтернативы, вместо предоставления хеша md5 в качестве идентификатора members()
вы можете указать адрес электронной почты контакта в виде строки, и эта библиотека выполнит хеширование за вас. Так:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' [email protected] ' )
-> get ();
Подробную информацию о запросах
GET
можно прочитать здесь: https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Get-Requests.
Хотя возможность получать данные из вашей учетной записи — это здорово, нам также необходимо иметь возможность публиковать новые данные. Это можно сделать, вызвав метод POST()
в конце цепочки. В качестве примера подписка адреса на список будет выглядеть так:
$ post_params = [
' email_address ' => ' [email protected] ' ,
' status ' => ' subscribed '
];
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> post ( $ post_params );
В этом случае я бы не предоставилmember members()
идентификатор, который я хочу опубликовать в его коллекции. Также обратите внимание, что данные публикации представляют собой массив пар ключ-значение, представляющий, какие параметры я хочу передать в API MailChimp. Убедитесь, что вы предоставили все обязательные поля для конечной точки, на которую отправляете публикацию. Проверьте документацию MailChimp, какие параметры требуются. Необязательные параметры можно просто добавить к данным публикации, и MailChimp будет игнорировать любые непригодные для использования параметры. Для иллюстрации приведем пример добавления подписчика в список с некоторыми необязательными параметрами:
$ 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 );
Подробную информацию о запросах
POST
можно прочитать здесь: https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Post-Requests.
Эта библиотека обрабатывает запросы PUT и PATCH аналогично запросам POST. Это означает, что PUT()
и PATCH()
принимают массив пар ключ-значение, которые представляют данные, которые вы хотите изменить/предоставить MailChimp. Например, если бы я исправлял подписчика, на которого мы подписались выше, чтобы у него было новое имя, это выглядело бы так.
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' a1167f5be2df7113beb69c95ebcdb2fd ' )
-> patch ([
" merge_fields " => [ " FNAME " => " Jane " ]
]);
Подробную информацию о запросах
PATCH
иPUT
можно прочитать здесь: https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Patch-&-Put-Requests.
Удаление записи из MailChimp выполняется методом DELETE()
и построено аналогично GET-запросам. Если бы я хотел удалить вышеуказанного подписчика, я бы:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' a1167f5be2df7113beb69c95ebcdb2fd ' )
-> delete ();
Подробную информацию о запросах
DELETE
можно прочитать здесь: https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Delete-Requests.
Методы, названные в честь HTTP-глаголов, таких как get()
, post()
, patch()
, put()
или delete()
запускают запрос по проводу к API MailChimp. При успешном запросе эти методы возвращают экземпляр MailchimpResponse
. Я предлагаю вам ознакомиться с этим классом, поскольку для разных частей ответа существует множество модификаторов и геттеров.
Существует ряд геттеров, которые мы можем использовать для взаимодействия с частями нашего экземпляра MailchimpResponse
. Некоторые из наиболее часто используемых из них:
$ 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
Например, если у меня есть ключ API, но я хочу, чтобы контактный адрес электронной почты был связан с его учетной записью:
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
$ account = $ mailchimp
-> account ()
-> get ()
$ contact_email = $ account
-> deserialize ()
->email
print $ contact_email ; // outputs something like "[email protected]"
Подробную информацию о том, как работать с ответами, можно прочитать здесь: 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()
*Пожалуйста, ознакомьтесь с документацией по API MailChimp, чтобы узнать, какие глаголы и где подходят.
** Методы, отмеченные *
выполняют сетевой запрос.
**Пожалуйста, следите за обновлениями и не стесняйтесь делать форки или запросы на извлечение. Посетите Wiki, чтобы получить дополнительную информацию о вкладе.