Не удается получить 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) и представляет новый адрес электронной почты.

MailChimp Документация

Другие вопросы по тегам