Mailchimp api на русском

Mailchimp API на русском языке. В этой статье я расскажу как использовать API сервиса рассылки Mailchimp.
Укажу где в документации взять код для подписки пользователя и как его скрытно подписать в свой список во время покупки товара в магазине Woocommerce.
Описание
Mailchimp довольно мощный инструмент для организации подписки на своем сайте.
Он позволяет создавать списки подписчиков по которым вы сможете сделать рассылку. Со своим макетом письма и текстом сообщения, именем пользователя и т.д. Это все можно опробовать совершенно бесплатно, создав аккаунт на сервисе.
Но сейчас речь пойдет о том, как использовать API Мейлчимп.
API Мейлчимп
Ссылка на документацию http://developer.mailchimp.com/documentation/mailchimp/reference/root.
Вся документация на английском. Возможно не всем понятно, но бывает, что нужно разобраться, а даже и по-русски не всегда.
Я расскажу на примере.
Для начала нужно создать аккаунт на сервисе. Затем активировать учетную запись и залогиниться.
В правом верхнем углу, с вашим именем аккаунта, выберите в выпадающем списке пункт Account.
Затем Extras->Api keys
Если у вас еще нет ключа, создайте его нажав кнопку Create A Key. Скопируйте получившийся ключ куда-нибудь в текстовый файл. Он вам понадобится при разработке.
Задача для примера
Нужно скрытно подписать пользователя вашего сайта в список мейлчимпа, ( зачастую просят такое сделать ), после покупки в вашем интернет магазине. Так как мы используем Вордпресс, то интернет магазин Woocommerce.
Как создать список Мейлчипм.( list Mailchimp )
В главном меню выбираем Lists->Create List.
Укажем аттрибуты: имя, email откуда, имя от кого, краткое описание.
В перечне наших спискрв выберем нужный и нажмем Stats->Settings
В следующем пункте увидим нужный нам listID
Найдем в документации раздел, как подписать пользователя с список.
http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/#
И найдем там пример, как это сделать
Как подсказывает нам документация, нужно использовать CURL. Для тех кто не в курсе, рекомендую PHP CURL.
Напишем следующий код
function order_subscribe_user($order_id){
$order = wc_get_order( $order_id );
$fname = $order->get_billing_first_name();
$email= $order->get_billing_email();
$apiKey = "4b0237de1ghy5sdf3456a01d78d49b2f87-us11"; // ваш API KEY от вашего аккаунта
$listID = 'aksjd23423'; // ID нашего списка подписчиков
$re = '/[\d]+$/';
preg_match_all($re, $apiKey, $matches, PREG_SET_ORDER, 0);
$link_num = (isset($matches[0][0])) ? $matches[0][0] : ''; // регулярным выражением извлечем из него номер хоста вашего аккаунта
$url = 'https://us'.$link_num.'.api.mailchimp.com/3.0/lists/'.$listID.'/members';
/////////////////////// PHP CURL /////////////////////////////////////////
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);
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, 'POST');
$json = json_encode([
'email_address' => $email,
'merge_fields'=>array('FNAME'=>$fname),
'status' => 'subscribed',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // в случае удачной подписки вернется код >200,
// если что то не так или такой пользователь подписан - вернется > 400
curl_close($ch);
//////////////////////////////////////////////////////////////////////////
}
Осталось малое — зацепить нашу функцию на хук Woocommerce, который отрабатывает во время создания заказа
// add_action( 'woocommerce_order_status_on-hold', 'order_subscribe_user', 10, 1 );
// add_action( 'woocommerce_order_status_pending', 'order_subscribe_user', 10, 1 );
// add_action( 'woocommerce_order_status_processing', 'order_subscribe_user', 10, 1 );
add_action( 'woocommerce_checkout_order_processed', 'order_subscribe_user', 10, 1 );
Два раза один и тотже подписчик в список не попадет, во второй раз сервис вернет 400
Код рабочий и опробирован неоднократно.
После подписки через время вы можете проверить свой аккаунт, и подписанного пользователя в списке. Правда бывает и через 10 минут, но при условии, что $httpCode вернул вам 200.
3 комментария
не работает, видимо пропущен curl_init
Спасибо.
Все исправил.
Но, так же вы должны вводить и свой API KEY, свой в примере я конечно же немного изменил.
В curl_init надо передавать $url, без этого не будет работать.