Не удается получить MailChimp API listUpdateMember для изменения адреса электронной почты пользователя
Я пытаюсь использовать MailChimp API для обновления адреса электронной почты участника, когда он меняет свою электронную почту в нашем веб-приложении.
Я использую пакет Laravel MailChimp, и он отлично работает (я могу подписывать пользователей, обновлять группы, обновлять имя и т. Д.), Но у меня должен быть merge_vars или что-то неправильное.
Я использую это:
$member_details = array(
// grabbed from config and working (also API key handled by bundle)
'id' => $id,
// passed from function - corresponds to the old email address
'email_address' => $mailchimp_old_email,
'merge_vars' => array(
// Old email again?
'EMAIL' => $mailchimp_old_email,
// new email address
'NEW-EMAIL' => $mailchimp_new_email,
),
'replace_interests' => FALSE,
);
$response = Mailchimp::listUpdateMember($member_details);
Так что "$response = 1", что заставило меня думать, что это сработало, но электронная почта пользователя не изменилась, когда я просматриваю список подписчиков в MailChimp.
В документации по API 1.3 есть listSubscribe, подробно описывающая merge_vars "EMAIL" и "NEW-EMAIL", и я читал об этом в этом сообщении stackru. Я попытался снова использовать listSubscribe, даже если он был существующим участником, но это не помогло с ответом $, говорящим, что член уже подписан.
Любые рекомендации о том, где я могу пойти не так? Я не нашел четкого примера такого использования API-интерфейса listUpdateMember.
2 ответа
Оказывается, ответ очень прост.
https://twitter.com/MailChimp_API/status/351674145609748480
Очевидно, что NEW-EMAIL вообще не нужен в merge_vars - просто EMAIL.
Итак, рабочий код в моем случае:
$member_details = array(
// grabbed from config and working (also API key handled by bundle)
'id' => $id,
// passed from function - corresponds to the old email address
'email_address' => $mailchimp_old_email,
'merge_vars' => array(
// new email address
'EMAIL' => $mailchimp_new_email,
),
'replace_interests' => FALSE,
);
$response = Mailchimp::listUpdateMember($member_details);
Это работает прямо. Чувствуется, что "NEW-EMAIL" действительно не требуется (или EMAIL должен быть удален, и просто используйте "NEW-EMAIL", так как это несколько более наглядно описывает происходящее).
Если вы обновились для использования MailChimp API v3, есть новый способ сделать это.
использование patch
или же put
метод на /lists/members
конечная точка.
email_address
это свойство верхнего уровня объекта, который вы нажимаете (на том же уровне, что и merge_fields
, который называется merge_vars
в API 2) и представляет новый адрес электронной почты.