Добавить подписчика в Mailchimp через API 3.0 - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь интегрировать версию 3 API Mailchimp, чтобы добавить подписчика в один из моих списков рассылки. Код ниже - это то, что у меня есть, и я собираюсь вызвать его в методе контактной формы, когда пользователь заполняет свою электронную почту, чтобы подписаться. Теоретически, он должен хранить это электронное письмо в emailAddress и отправлять его в MailChimp, но теории не практичны. Ниже мой текущий метод данных POST:

private string InsertIntoMailChimpGeneralList(string emailAddress)
{
    var apiKey = ConfigurationManager.AppSettings["MailChimpAPIKeyGeneral"];
    var dataCenter = ConfigurationManager.AppSettings["MailChimpDataCenterIDGeneral"];
    var listId = ConfigurationManager.AppSettings["mailChimpListIDGeneral"];
    var email_address = emailAddress;
    var status = "subscribed";

    using (var wc = new System.Net.WebClient())
    {
        // Data to be posted to add email address to list
        var data = new { email_address, status };

        // Serialize to JSON using Json.Net
        var json = JsonConvert.SerializeObject(data);

        // Base URL to MailChimp API
        string apiUrl = "https://" + dataCenter + ".api.mailchimp.com/3.0/";

        // Construct URL to API endpoint being used
        var url = string.Concat(apiUrl, "lists/", listId, "/members?");

        // Set content type
        wc.Headers.Add("Content-Type", "application/json");

        // Generate authorization header
        string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(":" + apiKey));

        // Set authorization header
        wc.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", credentials);

        // Post and get JSON response
        string sendUrl = wc.UploadString(url, json);

        return sendUrl;
    }
}

В моей контактной форме у меня есть проверка, где я хочу, чтобы адрес электронной почты был добавлен в контактную форму (emailAddress - переменная, используемая здесь), чтобы опубликовать эти данные в списке, когда форма отправлена:

            if (ConfigurationManager.AppSettings["UseMailChimpIntegration"].ToString().ToLower().Trim() == "true")
        {
            InsertIntoMailChimpGeneralList(emailAddress);
        }

Я чувствую, что неправильно это реализовал. Я смог заставить его работать на v2, но переход на v3 оставил меня в неведении. Моя контактная форма работает нормально и хранит мои значения в моей локальной базе данных, но не отправляет эти данные в mailchimp.

Я трижды проверил свои значения API / центра обработки данных и был бы признателен за помощь.

...