Як реалізувати передплату в MailChimp по API

Як реалізувати передплату в MailChimp по API

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, де у разі помилок ви зможете їх побачити.
Для отримання додаткової інформації про поля й можливі відповіді звертайтесь до офіційної документації.

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *