使用MailChimp API v3.0创建新的订户验证错误

时间:2015-10-06 10:14:42

标签: mailchimp mailchimp-api-v3.0

我在使用v3 API在列表中创建新成员时遇到问题。我正在用json数据发送帖子请求:

url:

https://us10.api.mailchimp.com/3.0/lists/<list-id>/members

标题

   Content-type: application/json
   Authorization: apikey <my-api-key>

Json身体:

{
  "status": "pending",
  "email_address": "emai@example.com",
  "merge_fields": {
    "FNAME": "John",
    "LNAME": "Smith",
    "REFERRER": "referrer",
    "REFERRAL": "referral"
  }
}

它基于api文档和教程https://teamtreehouse.com/library/mailchimp-api/mailchimp-api/adding-new-members-to-your-list。但每个回复看起来都像:

{
  "type": "http://kb.mailchimp.com/api/error-docs/400-invalid-resource",
  "title": "Invalid Resource",
  "status": 400,
  "detail": "Your merge fields were invalid.",
  "instance": "",
  "errors": [
    {
      "field": "FNAME",
      "message": "Please enter a value"
    },
    {
      "field": "LNAME",
      "message": "Please enter a value"
    },
    {
      "field": "REFERRAL",
      "message": "Please enter a value"
    },
    {
      "field": "REFERRER",
      "message": "Please enter a value"
    }
  ]
}

我做错了什么?这是MailChimp API的问题吗?

4 个答案:

答案 0 :(得分:2)

将用户添加到列表时,您必须添加所有必需的字段&#39;在你的名单中。要查看您的字段,请登录邮件黑猩猩点击&#39;列表&#39;然后进入你的清单。来自&#39;设置&#39;下拉选择列表字段和 | MERGE | 标记&#39;。

enter image description here

时事通讯是我添加的另一个自定义必填字段。如果我没有发送它,我将收到您的错误,因为它是必填字段。所有其他字段都需要在merge_fields数组中添加,例如&#39; NEWSLETTER&#39;。

$dataCenter ='us10'; //last part of the api key
$auth = base64_encode( 'user:'.$apikey );
$data = array(
   'apikey'        => $apikey,
   'email_address' => $email,
   'status'        => 'subscribed',
   'merge_fields'  => ['NEWSLETTER' => '1']
);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/f3e05535e8/members/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
'Authorization: Basic '.$auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
$result = curl_exec($ch);

如果我的表单中有更多自定义字段,我会像这样添加它们:

'merge_fields'  => [
    'NEWSLETTER' => '1',
    'ANOTHERFIELD' => 'this is example data',
]

邮件黑猩猩文档说它需要一个&#39; merge_fields&#39;当数组转换为json时,它成为一个json对象。

http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/

答案 1 :(得分:1)

此外(缺少必填字段)我试图添加大写字母的电子邮件,从而遇到了这个问题。因此,如果您发送的数据格式错误,也可能发生这种情况。

答案 2 :(得分:1)

我认为json没问题。虽然它说合并字段,但测试电子邮件地址不合适。

我可以通过两种方式制作400错误代码:

  • 尝试添加列表中已有的电子邮件地址
  • 尝试添加无效的虚假地址(emai@example.com)或其他内容......

如果您想制作假地址,请使用 @ freddiesjokes.com
ex // emai@freddiesjokes.com

我也试过@ example.com,希望这有助于未来的人(问过差不多2年后回答)

答案 3 :(得分:0)

您需要填写所需的合并标签或将其删除,

注意:删除REQUIRED合并字段后会有(可能的)延迟。

我没有留意看多长时间,我可以在复制列表后确认需要合并标签。