Суперпростая оболочка MailChimp API v3 с минимальной абстракцией на PHP.
Я ненавижу сложные обертки. Это позволяет вам максимально напрямую перейти от документации API MailChimp к коду.
Требуется PHP 5.3 и пульс. Абстракция — для шимпанзе.
Вы можете установить mailchimp-api с помощью Composer:
composer require drewm/mailchimp-api
Затем вам нужно будет:
запустите composer install
чтобы добавить эти зависимости в каталог вашего поставщика.
добавьте автозагрузчик в свое приложение с помощью этой строки: require("vendor/autoload.php")
Альтернативно вы можете просто скачать файл MailChimp.php
и подключить его вручную:
include('./MailChimp.php');
Если вы хотите использовать интерфейсы пакетного запроса или веб-перехватчика, вам также необходимо загрузить и включить файлы Batch.php
или Webhook.php
:
include('./Batch.php'); include('./Webhook.php');
Это необязательно. Если вы не используете пакеты или веб-перехватчики, вы можете просто пропустить их. Вы всегда можете вернуться и добавить их позже.
Начните с use
класса и создания экземпляра с вашим ключом API.
используйте DrewMMailChimpMailChimp;$MailChimp = новый MailChimp('abc123abc123abc123abc123abc123-us1');
Затем перечислите все списки рассылки (с помощью метода get
lists
).
$result = $MailChimp->get('lists');print_r($result);
Подписать кого-либо на список (с post
метода lists/{listID}/members
):
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'подписан', ]);print_r($результат);
Обновите член списка, добавив дополнительную информацию (используя patch
для обновления):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'Дэви', 'LNAME'=>'Джонс'], 'интересы' => ['2s3a384h' => true], ]);print_r($результат);
Удалите член списка, используя метод delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
Быстро проверьте успешность действия с помощью метода success()
:
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'подписан', ]);if ($MailChimp->success()) { print_r($result); } Еще { echo $MailChimp->getLastError(); }
Функциональность пакетных операций MailChimp позволяет выполнять несколько операций одним вызовом. Хорошим примером является добавление в список тысяч участников — вы можете выполнить это за один запрос, а не за тысячи.
используйте DrewMMailChimpMailChimp; используйте DrewMMailChimpBatch; $MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
Затем вы можете отправлять запросы к объекту Batch
так же, как вы обычно делаете это с объектом MailChimp
. Разница в том, что вам нужно установить идентификатор операции в качестве первого аргумента, а также вы не получите ответа. Идентификатор используется для поиска результата этого запроса в комбинированном ответе пакетной операции.
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'подписан', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'подписан', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'подписался', ]);
После того как вы выполнили все запросы, которые должны быть в пакете, вам необходимо его выполнить.
$result = $Batch->execute();
Результат включает идентификатор пакета. Позже вы можете проверить статус вашей партии:
$MailChimp->new_batch($batch_id);$result = $Batch->check_status();
Когда обработка пакета будет завершена, вы сможете загрузить результаты по URL-адресу, указанному в ответе. В JSON результат каждой операции будет зависеть от идентификатора, который вы использовали в качестве первого аргумента запроса.
Примечание. Для использования функции Webhooks требуется PHP версии не ниже 5.4.
Веб-хуки MailChimp позволяют вашему коду получать уведомления об изменениях в списках и кампаниях.
Когда вы настраиваете вебхук, вы указываете URL-адрес на своем сервере для отправки данных. Класс Webhook этой оболочки помогает аккуратно перехватить входящий веб-перехватчик. Он использует модель подписки, при которой ваш код подписывается на любые события веб-перехватчика, которые он хочет прослушивать. Вы предоставляете функцию обратного вызова, в которую передаются данные веб-перехватчика.
Чтобы прослушать вебхук unsubscribe
:
используйте DrewMMailChimpWebhook; Webhook::subscribe('отписаться', function($data){ print_r($data); });
На первый взгляд подписка/отписка выглядит запутанной — ваш код подписывается на событие веб-перехватчика unsubscribe
MailChimp. Функция обратного вызова передается как единственный аргумент — ассоциативный массив, содержащий данные вебхука.
Если вы предпочитаете просто перехватить все веб-перехватчики и разобраться с ними самостоятельно, вы можете использовать:
используйте DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
Похоже, что нет никакой документации по содержимому данных веб-перехватчика. Полезно использовать что-то вроде ngrok для туннелирования веб-перехватчиков на вашу машину разработки — затем вы можете использовать его веб-интерфейс для проверки того, что было отправлено, и для воспроизведения входящих веб-перехватчиков во время отладки кода.
Чтобы получить последнюю ошибку, возвращенную HTTP-клиентом или API, используйте getLastError()
:
echo $MailChimp->getLastError();
Для дальнейшей отладки вы можете проверить заголовки и тело ответа:
print_r($MailChimp->getLastResponse());
Если вы подозреваете, что отправляете данные в неправильном формате, вы можете посмотреть, что было отправлено в MailChimp оберткой:
print_r($MailChimp->getLastRequest());
Если корневые сертификаты ЦС вашего сервера не обновлены, вы можете обнаружить, что проверка SSL не удалась, и вы не получите ответа. Решением этой проблемы является не отключение проверки SSL. Решение — обновить сертификаты. Если вы не можете этого сделать, в верхней части файла класса есть опция. Пожалуйста, не выключайте его, хотя бы не пытаясь обновить сертификаты — это лениво и опасно. Вы же не ленивый и опасный разработчик?
Если у вас есть вопросы по реализации вашего проекта высокого уровня («Как мне добавить это в WordPress», «У меня есть форма, которая принимает адрес электронной почты...»), отправьте их куда-нибудь, например, в StackOverflow . Если вы считаете, что нашли ошибку или хотите обсудить изменения или улучшения, не стесняйтесь поднимать проблему, и мы решим ее между собой.
Это довольно простая оболочка, но она стала намного лучше благодаря вкладу тех, кто ее использует. Если вы хотите предложить улучшение, поднимите вопрос и обсудите его, прежде чем отправлять запрос на включение.
Запросы на включение ошибок приветствуются. Пожалуйста, объясните ошибку, которую вы пытаетесь исправить, в сообщении.
Существует небольшое количество модульных тестов PHPUnit. Модульное тестирование API, очевидно, немного сложное, но я буду рад любому вкладу в это дело. Было бы здорово иметь больше тестового покрытия.