Как реализовать подписку в MailChimp по API

Как реализовать подписку в MailChimp по API

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, и если там будут ошибки. Вы сможете их найти. За более детальной информацией о списке полей, вариантах ответа — обращайтесь к официальной документации.

Поделиться в соцсетях:

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *