jac*_*bar 6 mailchimp mailchimp-api-v3.0
我在使用v3 API在列表中创建新成员时遇到问题.我正在发送带有json数据的post请求:
网址:
https://us10.api.mailchimp.com/3.0/lists/<list-id>/members
Run Code Online (Sandbox Code Playgroud)
标题:
Content-type: application/json
Authorization: apikey <my-api-key>
Run Code Online (Sandbox Code Playgroud)
Json身体:
{
"status": "pending",
"email_address": "emai@example.com",
"merge_fields": {
"FNAME": "John",
"LNAME": "Smith",
"REFERRER": "referrer",
"REFERRAL": "referral"
}
}
Run Code Online (Sandbox Code Playgroud)
它基于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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这是MailChimp API的问题吗?
将用户添加到列表时,您必须在列表中添加所有“必填”字段。要查看您的字段,请登录邮件黑猩猩点击“列表”,然后进入您的列表。从“设置”下拉列表中选择“列出字段和|MERGE|” 标签'。
时事通讯是我添加的额外自定义必填字段。如果我不发送它,我会收到您遇到的错误,因为它是必填字段。所有其他字段都需要添加到 merge_fields 数组中,如“NEWSLETTER”。
$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);
Run Code Online (Sandbox Code Playgroud)
如果我的表单中有更多自定义字段,我会像这样添加它们:
'merge_fields' => [
'NEWSLETTER' => '1',
'ANOTHERFIELD' => 'this is example data',
]
Run Code Online (Sandbox Code Playgroud)
Mail chimp 文档说它需要一个 'merge_fields' 对象,当数组转换为 json 时,它会变成一个 json 对象。
http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/
| 归档时间: |
|
| 查看次数: |
8493 次 |
| 最近记录: |