如何使用API​​ 3.0从MailChimp列表获取单个记录(按电子邮件地址过滤)

时间:2015-09-11 14:29:12

标签: php json mailchimp mailchimp-api-v3.0

将新客户从我们的CRM流入MailChimp很简单,但我现在需要做的是仅根据他们的电子邮件地址获取单个客户记录并从MailChimp API获取他们的MailChimp ID 。

MailChimp API 3.0文档限制了使用过滤器进行GET调用的示例。我认为有可能过滤结果而不检索整个成员列表,这是脚本现在正在做的事情,但我只需要一个客户记录,而不是整个列表,否则我会收到每个成员的整个JSON字符串在列表中,将这个庞大的字符串编码成一个数组然后我需要遍历JSON数组来查找具有匹配电子邮件地址的记录,这对我来说效率非常低。 我必须遗漏在MailChimp API 3.0文档中不容易找到的内容,不是吗?!

我正在使用PHP库,但这并不重要,我真的只需要知道如何构建API调用 - 正确的URL(我可以附加?email_address=EMAIL_TO_FILTER试用但是没有& #39; t work)和JSON数组结构。我与MailChimp API成功连接并构建了mailChimpApiRequest()方法,如下所示:

function mailChimpApiRequest($method='POST', $url, $postFields = null){

    $ch  = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);

    $headerArr=array(   'Authorization: '  . $this->apikey);

    if($method!='POST' && !empty($method)) {
      //Not needed: $headerArr[] = 'X-HTTP-Method-Override: ' . $method;
    }

    curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $method );
    curl_setopt($ch, CURLOPT_HTTPHEADER,$headerArr );
    curl_setopt($ch, CURLOPT_POST, true);

    if ($postFields) {
        if ($method!=''){    $postFields['method']=$method;}

        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    }

    $curl_response = curl_exec($ch);
    curl_close($ch);

    return $curl_response;
}

有人可以帮我弄清楚要传递给上述$url方法的$postFieldsmailChimpApiRequest()数组吗?

2 个答案:

答案 0 :(得分:0)

只需将全部小写的电子邮件地址的MD5附加到网址即可。太容易了,我在MailChimp API文档中错过了。

答案 1 :(得分:0)

你得到了Aaron ...希望这可以帮助遇到同样问题的其他人: http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/#read-get_lists_list_id_members_subscriber_hash

如果您无法访问该网址,请参阅摘要:
对URL GET使用HTTP /lists/{list_id}/members/{subscriber_hash}请求 subscriber_hash是列表成员电子邮件地址的小写版本的MD5哈希值。