MailChimp, одна из самых популярных платформ для автоматизации email маркетинга. Имеющая богатый API арсенал, позволяющий удаленно управлять базами, подписчиками и рассылкой. В данной статье мы рассмотрим простой пример подписки пользователя по АПИ, и добавления его в список рассылки.
Для реализации подписки, мы будем использовать следующий PHP код:
<?php define('API_KEY', '***'); define('LIST_ID', '***'); //User data $user_email = '***'; $user_first_name = '***'; $user_last_name = '***'; // MailChimp API URL $member_id = md5(strtolower($user_email)); $data_center = substr(API_KEY,strpos(API_KEY,'-')+1); $url = 'https://'.$data_center.'.api.mailchimp.com/3.0/lists/'.LIST_ID.'/members/'.$member_id; // Member information $json = json_encode([ 'apikey' => API_KEY, 'email_address' => $user_email, 'status' => 'subscribed', // 'status' => 'unsubscribed', // 'status' => 'cleaned', // 'status' => 'pending', 'merge_fields' => [ 'FNAME' => $user_first_name, 'LNAME' => $user_last_name ] ]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERPWD, 'user:' . API_KEY); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); $result = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo "http code: ".$http_code; echo "<pre dir='ltr'>$result = ";print_r(json_decode($result, true)); echo "</pre>";
Давайте детальнее взглянем на код выше, и подробнее разберем его.
Данные которые указываются в константах, нужно получить от самого сервиса в соответствующих разделах
define('API_KEY', '***'); define('LIST_ID', '***');
Где:
API_KEY — АПИ ключ
LIST_ID — ID списка рассылки
Данные пользователя, его электронная почта, имя и фамилия.
$user_email = '***'; $user_first_name = '***'; $user_last_name = '***';
В реальной же ситуации, эти данные мы будем получить или из БД, с POST/GET массива или как-то еще.
Ниже мы формируем URL для отправки данных:
$member_id = md5(strtolower($user_email)); $data_center = substr(API_KEY,strpos(API_KEY,'-')+1); $url = 'https://'.$data_center.'.api.mailchimp.com/3.0/lists/'.LIST_ID.'/members/'.$member_id;
Далее, создаем массив заданной структуры, и пропускаем его через функцию «json_encode()».
$json = json_encode([ 'apikey' => API_KEY, 'email_address' => $user_email, 'status' => 'subscribed', // 'status' => 'unsubscribed', // 'status' => 'cleaned', // 'status' => 'pending', 'merge_fields' => [ 'FNAME' => $user_first_name, 'LNAME' => $user_last_name ] ]);
В примере указаны не все параметры, а лишь те, которые позволят нам подписать пользователя с минимальными требованиями.
Обратите внимание на параметр «status», имеется несколько вариантов — подписать пользователя, отписать его, отменить (уже не помню что это значит), подтвердить подписку.
Внимание! Будьте внимательны при тестировании работы. Иногда, с почтовыми ящиками от mail.ru, подтверждение подписки не приходит.
Используя CURL от PHP отправляем данные на сервер маилчимпа:
$ch = curl_init($url); curl_setopt($ch, CURLOPT_USERPWD, 'user:' . API_KEY); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); $result = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
И отображаем данные в браузере:
echo "http code: ".$http_code; echo " <pre dir='ltr'>$result = ";print_r(json_decode($result, true)); echo "</pre> ";
Содержимое переменной «$http_code», мы можем использовать для проверки кода ответа. И если он не совпадает с ответом 200, то можно будет отобразить соответствующее уведомление.
А в «$result» располагается ответ от MailChimp, и если там будут ошибки. Вы сможете их найти. За более детальной информацией о списке полей, вариантах ответа — обращайтесь к официальной документации.