MailChimp — одна з найпопулярніших платформ для автоматизації email-маркетингу. Вона має потужний набір API, який дозволяє віддалено керувати базами, підписниками та розсилками. У цій статті ми розглянемо простий приклад підписки користувача через 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 — API-ключ
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:
$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, надсилаємо дані на сервер MailChimp:
$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, де у разі помилок ви зможете їх побачити.
Для отримання додаткової інформації про поля й можливі відповіді звертайтесь до офіційної документації.
